diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2010-07-05 16:40:31 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2010-07-05 16:40:31 +0100 |
commit | 0dca7e0b7673e8b4c4be3220e89d75d2e2016085 (patch) | |
tree | 268ae7570c8cff7e087198ffd0cf6a0c67a18ddf /amqp_codegen.py | |
parent | 6cda49994675395b25dac5bfccb55cdf07b9fe2b (diff) | |
download | rabbitmq-codegen-0dca7e0b7673e8b4c4be3220e89d75d2e2016085.tar.gz |
Refactor merge_dict_lists_by a bit.
Diffstat (limited to 'amqp_codegen.py')
-rw-r--r-- | amqp_codegen.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/amqp_codegen.py b/amqp_codegen.py index c1dbfae..2d6535d 100644 --- a/amqp_codegen.py +++ b/amqp_codegen.py @@ -88,23 +88,24 @@ def domains_merger(key, old, new, allow_overwrite): return [[k, v] for (k, v) in o.iteritems()] -def merge_dict_lists_by(dict_key, old, new, allow_overwrite, check_fields, **kwargs): - old_index = dict((v[dict_key], v) for v in old) +def merge_dict_lists_by(field, old, new, allow_overwrite, check_fields, **kwargs): + old_index = dict((item[field], item) for item in old) result = list(old) # shallow copy - for v in new: - key = v[dict_key] - if key in old_index.iterkeys(): + for item in new: + key = item[field] + if old_index.has_key(key): if not allow_overwrite: raise AmqpSpecFileMergeConflict(description, old, new) + old_item = old_index[key] for f in check_fields: - old_val = old_index[key].get(f, None) - new_val = v.get(f, None) + old_val = old_item.get(f, None) + new_val = item.get(f, None) if old_val != new_val: raise AmqpSpecFileMergeConflict(key, f, old_val, new_val) if kwargs.has_key("sub_merge"): - kwargs["sub_merge"](old_index[key], v) + kwargs["sub_merge"](old_item, item) else: - result.append(v) + result.append(item) return result def constants_merger(key, old, new, allow_overwrite): |