cctool

A tool for managing contacts and calendars.
git clone https://git.ce9e.org/cctool.git

commit
a7fa218d50fd203bf7ba9b9db438442b91a55fdb
parent
a2c3c180bd2547bfdd32e2cb21828d432feefeb3
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2015-05-08 17:48
merge on intersection, not equality

Diffstat

M cctool.py 17 +++++++----------

1 files changed, 7 insertions, 10 deletions


diff --git a/cctool.py b/cctool.py

@@ -162,18 +162,15 @@ class MultiDict(OrderedDict):
  162   162 
  163   163 def merged(data, key):
  164   164 	"""Outer join `data` on `key`."""
  165    -1 	tmp = dict()
  166    -1 	missing = []
   -1   165 	tmp = list()
  167   166 	for entry in data:
  168    -1 		if key in entry:
  169    -1 			tmp_key = str(entry[key])
  170    -1 			if tmp_key in tmp:
  171    -1 				tmp[tmp_key].update(entry)
  172    -1 			else:
  173    -1 				tmp[tmp_key] = entry
   -1   167 		for other in tmp:
   -1   168 			if not set(entry[key]).isdisjoint(other[key]):
   -1   169 				other.update(entry)
   -1   170 				break
  174   171 		else:
  175    -1 			missing.append(entry)
  176    -1 	return list(tmp.values()) + missing
   -1   172 			tmp.append(entry)
   -1   173 	return tmp
  177   174 
  178   175 
  179   176 def map_keys(mdict, _map, reverse=False, exclusive=True):