Utility URL functions for MoonBit
Dependencies
assert_eq(slugify("Hello, World!"), "hello-world")
assert_eq(slugify("Cr\u{00E8}me br\u{00FB}l\u{00E9}e"), "creme-brulee")assert_eq(slugify("Cafe\u{0301}"), "cafe")
assert_eq(slugify("ABC 123"), "abc-123")let options : SlugOptions = {
separator: '_',
lowercase: false,
trim_separator: true,
max_length: Some(7),
ascii_only: true,
fallback: Some("n-a"),
}
assert_eq(slugify("Hello MoonBit", options~), "Hello_M")
assert_eq(slugify("中文标题", options~), "n-a")let rules = RuleSet::default().extend(char_map=[('\u{2764}', "love")])
assert_eq(slugify("I \u{2764} MoonBit", rules~), "i-love-moonbit")let rules = RuleSet::new(word_map=[("new", "n"), ("new york", "ny")])
assert_eq(slugify("new york city", rules~), "ny-city")
assert_eq(slugify("concatenate cat", rules=RuleSet::new(word_map=[("cat", "feline")])) , "concatenate-feline")let base = RuleSet::new(char_map=[('\u{2764}', "love")])
let overlay = RuleSet::new(char_map=[('\u{2764}', "heart")])
let merged = base.merge(overlay)
assert_eq(slugify("I \u{2764}", rules=merged), "i-heart")pub struct RuleSet {
raw_word_map : Array[(String, String)]
raw_char_map : Array[(Char, String)]
raw_drop_chars : Array[Char]
raw_separator_chars : Array[Char]
word_map_buckets : Buckets[(Array[Char], String)]
char_map_buckets : Buckets[(Char, String)]
drop_buckets : Buckets[Char]
separator_buckets : Buckets[Char]
}pub(all) struct SlugOptions {
separator : Char
lowercase : Bool
trim_separator : Bool
max_length : Int?
ascii_only : Bool
fallback : String?
}impl Default for SlugOptions