def recurse(tree, liege=None): for n, v in tree: if ck2parser.is_codename(n.val): attrs = {n.val: '', n.val + '_adj': ''} for n2, v2 in v: if n2.val in lt_keys: try: value = v2.val except AttributeError: value = ' '.join(s.val for s in v2) attrs[n2.val] = value title_attrs[n.val] = attrs if liege: title_vassals[liege].append(n.val) recurse(v, n.val) if n.val[0] == 'd': region = title_region.get(n.val) for vassal in title_vassals[n.val]: rerecurse(vassal, region) elif n.val[0] in 'ek': counter = collections.Counter(title_region[t] for t in title_vassals[n.val] if t in title_region) if counter: region = min(counter.items(), key=lambda x: (-x[1], x[0]))[0] rerecurse(n.val, region)
def update_tree(v, sed2, lt_keys): for n2, v2 in v: if is_codename(n2.val): if n2.val.startswith('b_') and not no_provinces: for p3 in reversed(v2.contents): if p3.key.val in cultures: v2.contents.remove(p3) elif not no_provinces or re.match(r'[ekd]_', n2.val): for p3 in reversed(v2.contents): if p3.key.val in lt_keys: v2.contents.remove(p3) if sed2[n2.val]: index = next((i for i, (n3, _) in enumerate(v2) if is_codename(n3.val)), len(v2)) v2.contents[index:index] = sed2[n2.val] update_tree(v2, sed2, lt_keys)
def scan_for_baronies(tree): for n, v in tree: if ck2parser.is_codename(n.val): if n.val.startswith('c_'): baronies = sum(1 for n2, _ in v if n2.val.startswith('b_')) yield n.val, baronies else: yield from scan_for_baronies(v)
def update_tree(v, sed2, lt_keys): for n2, v2 in v: if ck2parser.is_codename(n2.val): if n2.val.startswith('b_'): for p3 in reversed(v2.contents): if p3.key.val in cultures: v2.contents.remove(p3) else: for p3 in reversed(v2.contents): if p3.key.val in lt_keys: v2.contents.remove(p3) if sed2[n2.val]: index = next( (i for i, (n3, _) in enumerate(v2) if ck2parser.is_codename(n3.val)), len(v2)) v2.contents[index:index] = sed2[n2.val] v2.indent = v2.indent update_tree(v2, sed2, lt_keys)
def recurse(tree): for n, v in tree: if is_codename(n.val): for n2, v2 in v: if n2.val in cultures: if v2.val not in dynamics[n.val]: dynamics[n.val].append(v2.val) if (n.val in prov_id and v2.val not in dynamics[prov_id[n.val]]): dynamics[prov_id[n.val]].append(v2.val) recurse(v)
def recurse(v, n=None): for n1, v1 in v: if not ck2parser.is_codename(n1.val): continue for n2, v2 in v1: if n2.val in cultures: if v2.val not in dynamics[n1.val]: dynamics[n1.val].append(v2.val) if (n1.val in prov_id and v2.val not in dynamics[prov_id[n1.val]]): dynamics[prov_id[n1.val]].append(v2.val) recurse(v1, n1)
def recurse(v): for n2, v2 in v: if not ck2parser.is_codename(n2.val): continue items = [] for n3, v3 in v2: if n3.val in lt_keys: if isinstance(v3, ck2parser.Obj): value = ' '.join(s.val for s in v3) else: value = v3.val items.append((n3.val, value)) yield n2.val, items yield from recurse(v2)
def recurse(tree): for n, v in tree: if is_codename(n.val): titles.add(n.val) items = [] for n2, v2 in v: if n2.val in lt_keys: if isinstance(v2, Obj): value = ' '.join(s.val for s in v2) else: value = v2.val items.append((n2.val, value)) yield n.val, items yield from recurse(v)