Crate unicode_names [−] [src]
Convert between characters and their standard names.
This crate provides two functions for mapping from a char
to the
name given by the Unicode standard (7.0). There are no runtime
requirements so this is usable with only core
(this requires
specifying the no_std
cargo feature). The tables are heavily
compressed, but still large (500KB), and still offer efficient
O(1)
look-ups in both directions (more precisely, O(length of name)
).
extern crate unicode_names; fn main() { println!("☃ is called {:?}", unicode_names::name('☃')); // SNOWMAN println!("{:?} is happy", unicode_names::character("white smiling face")); // ☺ // (NB. case insensitivity) }
Macros
The associated unicode_names_macros
crate provides two macros
for converting at compile-time, giving named literals similar to
Python's "\N{...}"
.
named_char!(name)
takes a single stringname
and creates achar
literal.named!(string)
takes a string and replaces any\\N{name}
sequences with the character with that name. NB. String escape sequences cannot be customised, so the extra backslash (or a raw string) is required.
#![feature(plugin)] #![plugin(unicode_names_macros)] fn main() { let x: char = named_char!("snowman"); assert_eq!(x, '☃'); let y: &str = named!("foo bar \\N{BLACK STAR} baz qux"); assert_eq!(y, "foo bar ★ baz qux"); }
Cargo-enabled
This package is on crates.io, so add either (or both!) of the
following to your Cargo.toml
.
[dependencies]
unicode_names = "0.1"
unicode_names_macros = "0.1"
Structs
Name |
An iterator over the components of a code point's name, it also
implements |
Functions
character |
Find the character called |
name |
Find the name of |