Browse Source

Tools: param_metadata: Add parser code to include uniq ref from path

master
Hamish Willee 6 years ago committed by Peter Barker
parent
commit
329b972845
  1. 18
      Tools/autotest/param_metadata/param_parse.py
  2. 11
      Tools/autotest/param_metadata/rstemit.py

18
Tools/autotest/param_metadata/param_parse.py

@ -194,6 +194,7 @@ def process_library(vehicle, library, pathprefix=None): @@ -194,6 +194,7 @@ def process_library(vehicle, library, pathprefix=None):
debug("Setting vehicle-specific value (%s)" % str(this_vehicle_value))
setattr(p, field[0], this_vehicle_value)
debug("Appending (non_vehicle_specific_values_seen=%u other_vehicle_values_seen=%u this_vehicle_values_seen=%u!)" % (non_vehicle_specific_values_seen, other_vehicle_values_seen, this_vehicle_values_seen))
p.path = path # Add path. Later deleted - only used for duplicates
library.params.append(p)
group_matches = prog_groups.findall(p_text)
@ -264,6 +265,23 @@ for vehicle in vehicles: @@ -264,6 +265,23 @@ for vehicle in vehicles:
for param in vehicle.params:
validate(param)
# Find duplicate names in library and fix up path
for library in libraries:
param_names_seen = set()
param_names_duplicate = set()
# Find duplicates:
for param in library.params:
if param.name in param_names_seen: # is duplicate
param_names_duplicate.add(param.name)
param_names_seen.add(param.name)
# Fix up path for duplicates
for param in library.params:
if param.name in param_names_duplicate:
param.path = param.path.rsplit('/')[-1].rsplit('.')[0]
else:
# not a duplicate, so delete attribute.
delattr(param, "path")
for library in libraries:
for param in library.params:
validate(param)

11
Tools/autotest/param_metadata/rstemit.py

@ -206,11 +206,18 @@ Complete Parameter List @@ -206,11 +206,18 @@ Complete Parameter List
if not hasattr(param, 'DisplayName') or not hasattr(param, 'Description'):
continue
d = param.__dict__
# Get param path if defined (i.e. is duplicate parameter)
param_path = getattr(param, 'path', '')
if self.annotate_with_vehicle:
name = param.name
else:
name = param.name.split(':')[-1]
tag = '%s: %s' % (self.escape(name), self.escape(param.DisplayName),)
tag_param_path = ' (%s)' % param_path if param_path else ''
tag = '%s%s: %s' % (self.escape(name), self.escape(tag_param_path), self.escape(param.DisplayName),)
tag = tag.strip()
reference = param.name
# remove e.g. "ArduPlane:" from start of parameter name:
@ -218,6 +225,8 @@ Complete Parameter List @@ -218,6 +225,8 @@ Complete Parameter List
reference = g.name + "_" + reference.split(":")[-1]
else:
reference = reference.split(":")[-1]
if param_path:
reference += '__' + param_path
ret += """

Loading…
Cancel
Save