File: tag_metadata.py

package info (click to toggle)
pyparsing 3.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 12,200 kB
  • sloc: python: 30,867; ansic: 422; sh: 112; makefile: 24
file content (41 lines) | stat: -rw-r--r-- 1,012 bytes parent folder | download | duplicates (6)
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
#
# tag_metadata.py
#
# Copyright 2024, Paul McGuire
#

import pyparsing as pp
ppu = pp.unicode

# associate "alphabet" tag with different Unicode character sets
latin = pp.Word(ppu.Latin1.alphas) + pp.Tag("alphabet", "Latin")
greek = pp.Word(ppu.Greek.alphas) + pp.Tag("alphabet", "Greek")
japanese = pp.Word(ppu.Japanese.alphas) + pp.Tag("alphabet", "Japanese")

# associate "mood" tags with different end punctuation marks
end_punc = (
        ("." + pp.Tag("mood", "normal"))
        | ("!" + pp.Tag("mood", "excited"))
        | ("?" + pp.Tag("mood", "curious"))
)

greeting = "Hello," + (latin | greek | japanese) + end_punc

if __name__ == '__main__':
    import contextlib

    with contextlib.suppress(Exception):
        greeting.create_diagram(
            "tag_metadata_diagram.html",
            vertical=3,
            show_hidden=True
        )

    greeting.run_tests(
        """\
        Hello, World.
        Hello, World!
        Hello, κόσμος?
        Hello, 世界!
        """
    )