def _m_default_ui_name(cls, base_name): result = base_name Roles = getattr(cls, "Roles", []) if Roles and all(R.E_Type for R in Roles): rn_pat = Regexp \ ( "^" + "_(.+)_".join (R.E_Type.type_base_name for R in Roles) + "$" ) if rn_pat.match(base_name): cs = rn_pat.groups() ns = tuple(R.E_Type.ui_name for R in Roles) result = filtered_join \ (" ", itertools.chain (* paired (ns, cs))) return result
def _m_default_ui_name (cls, base_name) : result = base_name Roles = getattr (cls, "Roles", []) if Roles and all (R.E_Type for R in Roles) : rn_pat = Regexp \ ( "^" + "_(.+)_".join (R.E_Type.type_base_name for R in Roles) + "$" ) if rn_pat.match (base_name) : cs = rn_pat.groups () ns = tuple (R.E_Type.ui_name for R in Roles) result = filtered_join \ (" ", itertools.chain (* paired (ns, cs))) return result
def create_map \ ( self , ignore_categories = {"Cc", "Cs", "Co", "Cn", "Zl"} , ignore_prefixes = _ignore_prefixes ) : """Create a map char-id -> char-code. `char-id` is a valid Python identifier derived from `unidoce.name`. """ from _TFL.Ascii import sanitized_filename from _TFL.formatted_repr import formatted_repr from _TFL.Regexp import Regexp, re import unicodedata ignore_categories = Regexp ("|".join (sorted (ignore_categories))) ignore_prefixes = Regexp ("|".join (sorted (ignore_prefixes))) result = {} for i in range (0x1, 0xf000) : c = chr (i) cat = unicodedata.category (c) if ignore_categories.match (cat) : continue try : ucd_name = unicodedata.name (c) except ValueError : continue id = sanitized_filename (ucd_name.lower ()).replace ("-", "_") if not ignore_prefixes.search (id) : result [id] = r"u%04x" % i result = "\n".join \ ( ( "# -*- coding: utf-8 -*-" , "# Copyright (C) 2020 Mag. Christian Tanzer All rights reserved" , "# Generated automatically, do not change manually!" , "" , "id_to_chr_map = \\" , formatted_repr (result).replace (": 'u", r": '\u") ) ) return result