diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2016-08-12 13:30:08 +0200 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2016-08-12 13:34:07 +0200 |
commit | dac64df84b0ed14199f41ac163d12ec20e497213 (patch) | |
tree | 4fddf98221d1e88eccabcdb4753954128fef9772 /music_sampler | |
parent | 3a488f9facff1f0d3a9b943d7da318424bc35efb (diff) | |
download | MusicSampler-dac64df84b0ed14199f41ac163d12ec20e497213.tar.gz MusicSampler-dac64df84b0ed14199f41ac163d12ec20e497213.tar.zst MusicSampler-dac64df84b0ed14199f41ac163d12ec20e497213.zip |
Add a 'common' section in key properties
Any option defined here applies to all keys (they can be overriden individualy)
Fixes https://git.immae.eu/mantisbt/view.php?id=5
Diffstat (limited to 'music_sampler')
-rw-r--r-- | music_sampler/mapping.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/music_sampler/mapping.py b/music_sampler/mapping.py index e589ac0..50b68a9 100644 --- a/music_sampler/mapping.py +++ b/music_sampler/mapping.py | |||
@@ -224,7 +224,8 @@ class Mapping(RelativeLayout): | |||
224 | def parse_config(self): | 224 | def parse_config(self): |
225 | def update_alias(prop_hash, aliases, key): | 225 | def update_alias(prop_hash, aliases, key): |
226 | if isinstance(aliases[key], dict): | 226 | if isinstance(aliases[key], dict): |
227 | prop_hash.update(aliases[key], **prop_hash) | 227 | for alias in aliases[key]: |
228 | prop_hash.setdefault(alias, aliases[key][alias]) | ||
228 | else: | 229 | else: |
229 | warn_print("Alias {} is not a hash, ignored".format(key)) | 230 | warn_print("Alias {} is not a hash, ignored".format(key)) |
230 | 231 | ||
@@ -336,6 +337,14 @@ class Mapping(RelativeLayout): | |||
336 | 337 | ||
337 | seen_files = {} | 338 | seen_files = {} |
338 | 339 | ||
340 | common_key_properties = {} | ||
341 | if 'common' in config['key_properties'] and\ | ||
342 | isinstance(config['key_properties'], dict): | ||
343 | common_key_properties = config['key_properties']['common'] | ||
344 | include_aliases(common_key_properties, aliases) | ||
345 | elif 'common' in config['key_properties']: | ||
346 | warn_print("'common' key in key_properties is not a hash, ignored") | ||
347 | |||
339 | key_properties = defaultdict(lambda: { | 348 | key_properties = defaultdict(lambda: { |
340 | "actions": [], | 349 | "actions": [], |
341 | "properties": {}, | 350 | "properties": {}, |
@@ -343,6 +352,9 @@ class Mapping(RelativeLayout): | |||
343 | }) | 352 | }) |
344 | 353 | ||
345 | for key in check_key_properties(config): | 354 | for key in check_key_properties(config): |
355 | if key == 'common': | ||
356 | continue | ||
357 | |||
346 | key_prop = config['key_properties'][key] | 358 | key_prop = config['key_properties'][key] |
347 | 359 | ||
348 | if not isinstance(key_prop, dict): | 360 | if not isinstance(key_prop, dict): |
@@ -351,6 +363,9 @@ class Mapping(RelativeLayout): | |||
351 | continue | 363 | continue |
352 | 364 | ||
353 | include_aliases(key_prop, aliases) | 365 | include_aliases(key_prop, aliases) |
366 | for _key in common_key_properties: | ||
367 | key_prop.setdefault(_key, common_key_properties[_key]) | ||
368 | |||
354 | check_key_property(key_prop, key) | 369 | check_key_property(key_prop, key) |
355 | 370 | ||
356 | key_properties[key]["properties"] = key_prop | 371 | key_properties[key]["properties"] = key_prop |