Note: In order to use this module, run nimble install punycode.

Implements a representation of Unicode with the limited ASCII character subset.

Example:

  1. import src/punycode
  2. static:
  3. block:
  4. doAssert encode("") == ""
  5. doAssert encode("a") == "a-"
  6. doAssert encode("A") == "A-"
  7. doAssert encode("3") == "3-"
  8. doAssert encode("-") == "--"
  9. doAssert encode("--") == "---"
  10. doAssert encode("abc") == "abc-"
  11. doAssert encode("London") == "London-"
  12. doAssert encode("Lloyd-Atkinson") == "Lloyd-Atkinson-"
  13. doAssert encode("This has spaces") == "This has spaces-"
  14. doAssert encode("ü") == "tda"
  15. doAssert encode("München") == "Mnchen-3ya"
  16. doAssert encode("Mnchen-3ya") == "Mnchen-3ya-"
  17. doAssert encode("München-Ost") == "Mnchen-Ost-9db"
  18. doAssert encode("Bahnhof München-Ost") == "Bahnhof Mnchen-Ost-u6b"
  19. block:
  20. doAssert decode("") == ""
  21. doAssert decode("a-") == "a"
  22. doAssert decode("A-") == "A"
  23. doAssert decode("3-") == "3"
  24. doAssert decode("--") == "-"
  25. doAssert decode("---") == "--"
  26. doAssert decode("abc-") == "abc"
  27. doAssert decode("London-") == "London"
  28. doAssert decode("Lloyd-Atkinson-") == "Lloyd-Atkinson"
  29. doAssert decode("This has spaces-") == "This has spaces"
  30. doAssert decode("tda") == "ü"
  31. doAssert decode("Mnchen-3ya") == "München"
  32. doAssert decode("Mnchen-3ya-") == "Mnchen-3ya"
  33. doAssert decode("Mnchen-Ost-9db") == "München-Ost"
  34. doAssert decode("Bahnhof Mnchen-Ost-u6b") == "Bahnhof München-Ost"

Types

  1. PunyError = object of ValueError

Procs

  1. func decode(encoded: string): string {....raises: [PunyError], tags: [],
  2. forbids: [].}

Decode a Punycode-encoded string

  1. func encode(prefix, s: string): string {....raises: [PunyError], tags: [],
  2. forbids: [].}

Encode a string that may contain Unicode. Prepend prefix to the result

  1. func encode(s: string): string {....raises: [PunyError], tags: [], forbids: [].}

Encode a string that may contain Unicode. Prefix is empty.