punycode

ASCII 文字の部分集合に限定した Unicode 形式の実装です。

用例:

static :
  block:
    doAssert encode("") == ""
    doAssert encode("a") == "a-"
    doAssert encode("A") == "A-"
    doAssert encode("3") == "3-"
    doAssert encode("-") == "--"
    doAssert encode("--") == "---"
    doAssert encode("abc") == "abc-"
    doAssert encode("London") == "London-"
    doAssert encode("Lloyd-Atkinson") == "Lloyd-Atkinson-"
    doAssert encode("This has spaces") == "This has spaces-"
    doAssert encode("ü") == "tda"
    doAssert encode("München") == "Mnchen-3ya"
    doAssert encode("Mnchen-3ya") == "Mnchen-3ya-"
    doAssert encode("München-Ost") == "Mnchen-Ost-9db"
    doAssert encode("Bahnhof München-Ost") == "Bahnhof Mnchen-Ost-u6b"
  block:
    doAssert decode("") == ""
    doAssert decode("a-") == "a"
    doAssert decode("A-") == "A"
    doAssert decode("3-") == "3"
    doAssert decode("--") == "-"
    doAssert decode("---") == "--"
    doAssert decode("abc-") == "abc"
    doAssert decode("London-") == "London"
    doAssert decode("Lloyd-Atkinson-") == "Lloyd-Atkinson"
    doAssert decode("This has spaces-") == "This has spaces"
    doAssert decode("tda") == "ü"
    doAssert decode("Mnchen-3ya") == "München"
    doAssert decode("Mnchen-3ya-") == "Mnchen-3ya"
    doAssert decode("Mnchen-Ost-9db") == "München-Ost"
    doAssert decode("Bahnhof Mnchen-Ost-u6b") == "Bahnhof München-Ost"

プロシージャ

proc encode(prefix, s: string): string {...}{.raises: [PunyError], tags: [].}
Unicode 文字列のエンコードをします。処理後に prefix を先頭に追加します。   ソース 編集
proc encode(s: string): string {...}{.raises: [PunyError], tags: [].}
Unicode 文字列のエンコードをします。prefix は空となります。  ソース 編集
proc decode(encoded: string): string {...}{.raises: [PunyError], tags: [].}
Punycode エンコード文字列のデコードをします   ソース 編集