diff options
Diffstat (limited to 'src/model/str.rs')
| -rw-r--r-- | src/model/str.rs | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/model/str.rs b/src/model/str.rs index ae0ef899..8da5b50c 100644 --- a/src/model/str.rs +++ b/src/model/str.rs @@ -42,11 +42,6 @@ impl Str { self } - /// The grapheme clusters the string consists of. - pub fn graphemes(&self) -> Array { - self.as_str().graphemes(true).map(|s| Value::Str(s.into())).collect() - } - /// Extract the first grapheme cluster. pub fn first(&self) -> StrResult<Self> { self.0 @@ -82,6 +77,16 @@ impl Str { Ok(self.0[start..end].into()) } + /// The grapheme clusters the string consists of. + pub fn clusters(&self) -> Array { + self.as_str().graphemes(true).map(|s| Value::Str(s.into())).collect() + } + + /// The codepoints the string consists of. + pub fn codepoints(&self) -> Array { + self.chars().map(|c| Value::Str(c.into())).collect() + } + /// Whether the given pattern exists in this string. pub fn contains(&self, pattern: StrPattern) -> bool { match pattern { @@ -350,12 +355,10 @@ impl Debug for Str { f.write_char('"')?; for c in self.chars() { match c { - '\\' => f.write_str(r"\\")?, + '\0' => f.write_str("\\u{0}")?, + '\'' => f.write_str("'")?, '"' => f.write_str(r#"\""#)?, - '\n' => f.write_str(r"\n")?, - '\r' => f.write_str(r"\r")?, - '\t' => f.write_str(r"\t")?, - _ => f.write_char(c)?, + _ => Display::fmt(&c.escape_debug(), f)?, } } f.write_char('"') |
