| 12345678910111213141516171819202122232425262728293031323334353637 |
- from enum import Enum
- from functools import lru_cache
- from grapheme.grapheme_property_group import ContainerNode, LeafNode, load_file
- class InCBPropertyGroup(Enum):
- CONSONANT = "InCBConsonant"
- EXTEND = "InCBExtend"
- LINKER = "InCBLinker"
- OTHER = "Other"
- SINGLE_CHAR_MAPPINGS = {}
- RANGE_TREE = ContainerNode([LeafNode(0, 0, None)])
- def get_group(char):
- if char in COMMON_OTHER_GROUP_CHARS:
- return InCBPropertyGroup.OTHER
- return get_group_ord(ord(char))
- @lru_cache(128)
- def get_group_ord(char):
- group = SINGLE_CHAR_MAPPINGS.get(char, None)
- if group:
- return group
- return RANGE_TREE.get_value(char) or InCBPropertyGroup.OTHER
- SINGLE_CHAR_MAPPINGS, RANGE_TREE, COMMON_OTHER_GROUP_CHARS = load_file(
- "data/derived_core_property.json", InCBPropertyGroup
- )
|