Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
 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)