1
|
# Map spreadsheet manipulation
|
2
|
|
3
|
def merge_values(*vals):
|
4
|
new = []
|
5
|
for val in vals:
|
6
|
if val != '' and val not in new: new.append(val)
|
7
|
return '; '.join(new)
|
8
|
|
9
|
def merge_rows(*rows):
|
10
|
'''e.g. ['a','b'] + ['','y','z'] = ['a','b; y','z']'''
|
11
|
def get(row, i):
|
12
|
try: return row[i]
|
13
|
except IndexError: return ''
|
14
|
return [merge_values(*[get(row, i) for row in rows])
|
15
|
for i in xrange(max(map(len, rows)))]
|
16
|
|
17
|
def merge_mappings(in_, out):
|
18
|
'''e.g. ['in','join','in_comments'] + ['join','out','out_comments'] =
|
19
|
['in','out','in_comments; out_comments']'''
|
20
|
new = [in_[0], out[1]] # mapping
|
21
|
new[2:] = merge_rows(in_[2:], out[2:]) # comments
|
22
|
return new
|