File: digraphcatalog.py

package info (click to toggle)
eln 1.5.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,876 kB
  • sloc: cpp: 26,606; perl: 796; python: 437; sh: 73; makefile: 32; xml: 8
file content (90 lines) | stat: -rwxr-xr-x 2,007 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/python3

import re
import os
import qplot as qp

rx = re.compile(r'"(.*)":\s*"(.*)"');

sections = []
keylist = []
keymap = {}
revmap = {}
secheader = []

with open("../src/Items/Digraphs.json") as f:
    fr = f.read()
    for line in fr.split("\n"):
        m = rx.search(line)
        if m:
            k = m.group(1)
            v = m.group(2)
            if k == "#":
                sections.append(keylist)
                secheader.append(v)
                keylist = []
            else:
                keylist.append(k)
                keymap[k] = v
                revmap[v] = k

sections.append(keylist)
sections = sections[1:]

N = len(sections)
dy = 12
space = {}

for n in range(N):
    seen = {}
    for k_ in sections[n]:
        k = k_
        v = keymap[k]
        if (v in seen) or (' ' in k):
            continue
        seen[v] = 1
    h = len(seen) * dy / 72 + .1
    qp.figure('digraphs', 1.2, h)
    qp.pen('w')
    qp.plot([0, 1], [0, -1])
    qp.pen()
    qp.at(.25, 0)
    y = 0
    seen = {}
    qp.font('FreeMono', 10)
    qp.align('left', 'base')
    for k_ in sections[n]:
        k = k_
        v = keymap[k]
        if (v in seen) or (' ' in k):
            continue
        seen[v] = 1
        while k[0] in revmap:
            k = revmap[k[0]] + k[1:]
        k = k.replace("^", "∧")
        k = k.replace("~", "∼")
        k = k.replace("\\\\", "\\")
        qp.text(k, 10, y)
        if n==1 and '∼∼' in k:
            space[k_] = 1
            y = y + 1
        y = y + dy
    y = 0
    seen = {}
    qp.font('CenturySchoolbook', 10)
    qp.align('center', 'base')
    for k in sections[n]:
        v = keymap[k]
        if (v in seen) or (' ' in k):
            continue
        seen[v] = 1
        qp.text(v, -10, y)
        if k in space:
            y = y + 1
        y = y + dy
    qp.shrink(2)
    qp.save(f"../build/digraphs-{n}.pdf")

os.chdir("../build")
os.system("placeqpt -o ../docs/userguide/digraphs.pdf ../tools/digraphs.placeqpt")