Skip to content
Justin Parker edited this page Jul 18, 2019 · 1 revision

Node, parameter, action & signal names

  1. Full names should support the entire Unicode character set.

  2. When presenting reduced (brief) names:

    1. characters between round-brackets and those round-brackets are to be considered extraneous e.g. Area A - Display (Samsung)
    2. // and following characters are to be considered extraneous(c-like)
    3. -- and following characters are to be considered extraneous (sql-like)
  3. When matching, flattened names are used according to the above rules as well as:

    1. all non-alphanumeric characters below code 127 (0x7f) are extraneous e.g. -, _, ., !, etc.
    2. full Unicode case-insensitivity
    3. diacritics are to be reduced according to (and then treated case-insensitively):
{
    "äæǽ": "ae", "öœ": "oe", "ü": "ue", "Ä": "Ae", "Ü": "Ue", "Ö": "Oe",
    "ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА": "A", "àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа": "a",
    "Б": "B", "б": "b", "ÇĆĈĊČ": "C", "çćĉċč": "c", "Д": "D", "д": "d", "ÐĎĐΔ": "Dj", "ðďđδ": "dj",
    "ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ": "E", "èéêëēĕėęěέεẽẻẹềếễểệеэ": "e",
    "Ф": "F", "ф": "f", "ĜĞĠĢΓГҐ": "G", "ĝğġģγгґ": "g", "ĤĦ": "H", "ĥħ": "h",
    "ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ": "I", "ìíîïĩīĭǐįıηήίιϊỉịиыї": "i",
    "Ĵ": "J", "ĵ": "j", "ĶΚК": "K", "ķκк": "k", "ĹĻĽĿŁΛЛ": "L", "ĺļľŀłλл": "l",
    "М": "M", "м": "m", "ÑŃŅŇΝН": "N", "ñńņňʼnνн": "n",
    "ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО": "O", "òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо": "o",
    "П": "P", "п": "p", "ŔŖŘΡР": "R", "ŕŗřρр": "r", "ŚŜŞȘŠΣС": "S", "śŝşșšſσςс": "s",
    "ȚŢŤŦτТ": "T", "țţťŧт": "t", "ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ": "U",
    "ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу": "u", "ÝŸŶΥΎΫỲỸỶỴЙ": "Y", "ýÿŷỳỹỷỵй": "y",
    "В": "V", "в": "v", "Ŵ": "W", "ŵ": "w", "ŹŻŽΖЗ": "Z", "źżžζз": "z",
    "ÆǼ": "AE", "ß": "ss", "IJ": "IJ", "ij": "ij", "Œ": "OE", "ƒ": "f", "ξ": "ks", "π": "p",
    "β": "v", "μ": "m", "ψ": "ps", "Ё": "Yo", "ё": "yo", "Є": "Ye", "є": "ye", "Ї": "Yi",
    "Ж": "Zh", "ж": "zh", "Х": "Kh", "х": "kh", "Ц": "Ts", "ц": "ts", "Ч": "Ch", "ч": "ch", 
    "Ш": "Sh", "ш": "sh", "Щ": "Shch", "щ": "shch", "ЪъЬь": "", "Ю": "Yu", "ю": "yu", "Я": "Ya", "я": "ya"
}

Nodel matches names according to their flattened form

Notes and examples

  • Given:

    • XYZ Gallery FP ("First Peoples")
    • XYZ Gallery ABC Display 1 (LG 34Z00 on the left)
    • XYZ Gallery ABC Display 2 (Samsung UA65 on the right)
    • XYZ Gallery ABC Player // TODO: IP address required
    • XYZ Gallery SW SS ("Science Works - Science Stage") -- TODO: not online until Feb

    Remote bindings to those nodes can be the reduced forms XYZ Gallery FP, XYZ Gallery ABC Display 1, XYZ Gallery ABC Display 2, XYZ Gallery ABC Player and XYZ Gallery SW SS and respectively and never need updating.

  • in node URLs, reduced names used instead of originals

    • e.g. http://.../nodes/GalleryXYZADAM6060relaydevice/ instead of http://.../nodes/Gallery%20XYZ%20ADAM%206060%20relay%20device/
  • diacritic flattening: Crème Brûlée and creme brulee are equivalent (and cremebrulee of course)

  • uses relaxed URL-encoded file names for node names (complete unrestricted Unicode support regardless of OS support)

    • alphanumeric ASCII and only ()[]{}'&^$#@!~;.+=-_,` are treated as safe, everything else is "%" UTF-8 encoded
Clone this wiki locally