Namecode: Encode Unicode strings as valid programming language identifiers.
Namecode encodes arbitrary Unicode strings into valid programming language identifiers that work across Rust, Go, JavaScript, and Python. Think "Punycode for variable names".
Key Properties
- Encode/decode in O(n) time
- Idempotent:
encode(encode(x)) == encode(x) - Strict roundtrip:
encode(decode(s)) == sfor valid encodings
Examples
use ;
// Valid XID identifiers pass through unchanged
assert_eq!;
assert_eq!;
assert_eq!;
// Non-XID characters get encoded
let encoded = encode;
assert!;
assert_eq!;
// Roundtrip property
let original = "foo-bar";
let encoded = encode;
assert_eq!;