mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-03 19:58:18 +00:00
rename countBytes -> countUtf8Bytes
This commit is contained in:
parent
5f2c7c5b5e
commit
5904934887
10 changed files with 27 additions and 25 deletions
|
@ -146,7 +146,7 @@ comptime {
|
|||
exportStrFn(str.strSplitInPlaceC, "str_split_in_place");
|
||||
exportStrFn(str.countSegments, "count_segments");
|
||||
exportStrFn(str.countGraphemeClusters, "count_grapheme_clusters");
|
||||
exportStrFn(str.countBytes, "count_bytes");
|
||||
exportStrFn(str.countUtf8Bytes, "count_utf8_bytes");
|
||||
exportStrFn(str.startsWith, "starts_with");
|
||||
exportStrFn(str.startsWithScalar, "starts_with_scalar");
|
||||
exportStrFn(str.endsWith, "ends_with");
|
||||
|
|
|
@ -1184,7 +1184,7 @@ test "countGraphemeClusters: emojis, ut8, and ascii characters" {
|
|||
try expectEqual(count, 10);
|
||||
}
|
||||
|
||||
pub fn countBytes(string: RocStr) callconv(.C) usize {
|
||||
pub fn countUtf8Bytes(string: RocStr) callconv(.C) usize {
|
||||
return string.len();
|
||||
}
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@ toI8 : Str -> Result I8 [InvalidNumStr]*
|
|||
getUnsafe : Str, Nat -> U8
|
||||
|
||||
## gives the number of string bytes
|
||||
countBytes : Str -> Nat
|
||||
countUtf8Bytes : Str -> Nat
|
||||
|
||||
## string slice that does not do bounds checking or utf-8 verification
|
||||
substringUnsafe : Str, Nat, Nat -> Str
|
||||
|
@ -242,10 +242,10 @@ splitFirst : Str, Str -> Result { before : Str, after : Str } [NotFound]*
|
|||
splitFirst = \haystack, needle ->
|
||||
when firstMatch haystack needle is
|
||||
Some index ->
|
||||
remaining = Str.countBytes haystack - Str.countBytes needle - index
|
||||
remaining = Str.countUtf8Bytes haystack - Str.countUtf8Bytes needle - index
|
||||
|
||||
before = Str.substringUnsafe haystack 0 index
|
||||
after = Str.substringUnsafe haystack (index + Str.countBytes needle) remaining
|
||||
after = Str.substringUnsafe haystack (index + Str.countUtf8Bytes needle) remaining
|
||||
|
||||
Ok { before, after }
|
||||
None ->
|
||||
|
@ -253,8 +253,8 @@ splitFirst = \haystack, needle ->
|
|||
|
||||
firstMatch : Str, Str -> [Some Nat, None]
|
||||
firstMatch = \haystack, needle ->
|
||||
haystackLength = Str.countBytes haystack
|
||||
needleLength = Str.countBytes needle
|
||||
haystackLength = Str.countUtf8Bytes haystack
|
||||
needleLength = Str.countUtf8Bytes needle
|
||||
lastPossible = Num.subSaturated haystackLength needleLength
|
||||
|
||||
firstMatchHelp haystack needle 0 lastPossible
|
||||
|
@ -277,10 +277,10 @@ splitLast : Str, Str -> Result { before : Str, after : Str } [NotFound]*
|
|||
splitLast = \haystack, needle ->
|
||||
when lastMatch haystack needle is
|
||||
Some index ->
|
||||
remaining = Str.countBytes haystack - Str.countBytes needle - index
|
||||
remaining = Str.countUtf8Bytes haystack - Str.countUtf8Bytes needle - index
|
||||
|
||||
before = Str.substringUnsafe haystack 0 index
|
||||
after = Str.substringUnsafe haystack (index + Str.countBytes needle) remaining
|
||||
after = Str.substringUnsafe haystack (index + Str.countUtf8Bytes needle) remaining
|
||||
|
||||
Ok { before, after }
|
||||
None ->
|
||||
|
@ -288,8 +288,8 @@ splitLast = \haystack, needle ->
|
|||
|
||||
lastMatch : Str, Str -> [Some Nat, None]
|
||||
lastMatch = \haystack, needle ->
|
||||
haystackLength = Str.countBytes haystack
|
||||
needleLength = Str.countBytes needle
|
||||
haystackLength = Str.countUtf8Bytes haystack
|
||||
needleLength = Str.countUtf8Bytes needle
|
||||
lastPossibleIndex = Num.subSaturated haystackLength (needleLength + 1)
|
||||
|
||||
lastMatchHelp haystack needle lastPossibleIndex
|
||||
|
@ -309,8 +309,8 @@ min = \x, y -> if x < y then x else y
|
|||
|
||||
matchesAt : Str, Nat, Str -> Bool
|
||||
matchesAt = \haystack, haystackIndex, needle ->
|
||||
haystackLength = Str.countBytes haystack
|
||||
needleLength = Str.countBytes needle
|
||||
haystackLength = Str.countUtf8Bytes haystack
|
||||
needleLength = Str.countUtf8Bytes needle
|
||||
endIndex = min (haystackIndex + needleLength) haystackLength
|
||||
|
||||
matchesAtHelp haystack haystackIndex needle 0 endIndex
|
||||
|
@ -329,7 +329,7 @@ matchesAtHelp = \haystack, haystackIndex, needle, needleIndex, endIndex ->
|
|||
## UTF-8 `U8` byte as well as the index of that byte within the string.
|
||||
walkUtf8WithIndex : Str, state, (state, U8, Nat -> state) -> state
|
||||
walkUtf8WithIndex = \string, state, step ->
|
||||
walkUtf8WithIndexHelp string state step 0 (Str.countBytes string)
|
||||
walkUtf8WithIndexHelp string state step 0 (Str.countUtf8Bytes string)
|
||||
|
||||
walkUtf8WithIndexHelp : Str, state, (state, U8, Nat -> state), Nat, Nat -> state
|
||||
walkUtf8WithIndexHelp = \string, state, step, index, length ->
|
||||
|
|
|
@ -313,7 +313,7 @@ pub const STR_JOIN_WITH: &str = "roc_builtins.str.joinWith";
|
|||
pub const STR_STR_SPLIT_IN_PLACE: &str = "roc_builtins.str.str_split_in_place";
|
||||
pub const STR_TO_SCALARS: &str = "roc_builtins.str.to_scalars";
|
||||
pub const STR_COUNT_GRAPEHEME_CLUSTERS: &str = "roc_builtins.str.count_grapheme_clusters";
|
||||
pub const STR_COUNT_BYTES: &str = "roc_builtins.str.count_bytes";
|
||||
pub const STR_COUNT_UTF8_BYTES: &str = "roc_builtins.str.count_utf8_bytes";
|
||||
pub const STR_STARTS_WITH: &str = "roc_builtins.str.starts_with";
|
||||
pub const STR_STARTS_WITH_SCALAR: &str = "roc_builtins.str.starts_with_scalar";
|
||||
pub const STR_ENDS_WITH: &str = "roc_builtins.str.ends_with";
|
||||
|
|
|
@ -81,7 +81,7 @@ pub fn builtin_defs_map(symbol: Symbol, var_store: &mut VarStore) -> Option<Def>
|
|||
STR_STARTS_WITH_SCALAR => str_starts_with_scalar,
|
||||
STR_ENDS_WITH => str_ends_with,
|
||||
STR_COUNT_GRAPHEMES => str_count_graphemes,
|
||||
STR_COUNT_BYTES=> str_count_bytes,
|
||||
STR_COUNT_UTF8_BYTES => str_count_bytes,
|
||||
STR_SUBSTRING_UNSAFE => str_substring_unsafe,
|
||||
STR_FROM_UTF8 => str_from_utf8,
|
||||
STR_FROM_UTF8_RANGE => str_from_utf8_range,
|
||||
|
@ -1727,9 +1727,9 @@ fn str_count_graphemes(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
|||
lowlevel_1(symbol, LowLevel::StrCountGraphemes, var_store)
|
||||
}
|
||||
|
||||
/// Str.countBytes : Str -> Nat
|
||||
/// Str.countUtf8Bytes : Str -> Nat
|
||||
fn str_count_bytes(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||
lowlevel_1(symbol, LowLevel::StrCountBytes, var_store)
|
||||
lowlevel_1(symbol, LowLevel::StrCountUtf8Bytes, var_store)
|
||||
}
|
||||
|
||||
/// Str.substringUnsafe : Str, Nat, Nat -> Nat
|
||||
|
|
|
@ -5340,12 +5340,12 @@ fn run_low_level<'a, 'ctx, 'env>(
|
|||
let string = load_symbol(scope, &args[0]);
|
||||
call_bitcode_fn(env, &[string], bitcode::STR_COUNT_GRAPEHEME_CLUSTERS)
|
||||
}
|
||||
StrCountBytes => {
|
||||
StrCountUtf8Bytes => {
|
||||
// Str.countGraphemes : Str -> Nat
|
||||
debug_assert_eq!(args.len(), 1);
|
||||
|
||||
let string = load_symbol(scope, &args[0]);
|
||||
call_bitcode_fn(env, &[string], bitcode::STR_COUNT_BYTES)
|
||||
call_bitcode_fn(env, &[string], bitcode::STR_COUNT_UTF8_BYTES)
|
||||
}
|
||||
StrSubstringUnsafe => {
|
||||
// Str.substringUnsafe : Str, Nat, Nat -> Str
|
||||
|
|
|
@ -248,7 +248,9 @@ impl<'a> LowLevelCall<'a> {
|
|||
StrCountGraphemes => {
|
||||
self.load_args_and_call_zig(backend, bitcode::STR_COUNT_GRAPEHEME_CLUSTERS)
|
||||
}
|
||||
StrCountBytes => self.load_args_and_call_zig(backend, bitcode::STR_COUNT_BYTES),
|
||||
StrCountUtf8Bytes => {
|
||||
self.load_args_and_call_zig(backend, bitcode::STR_COUNT_UTF8_BYTES)
|
||||
}
|
||||
StrToNum => {
|
||||
let number_layout = match self.ret_layout {
|
||||
Layout::Struct { field_layouts, .. } => field_layouts[0],
|
||||
|
|
|
@ -13,7 +13,7 @@ pub enum LowLevel {
|
|||
StrEndsWith,
|
||||
StrSplit,
|
||||
StrCountGraphemes,
|
||||
StrCountBytes,
|
||||
StrCountUtf8Bytes,
|
||||
StrFromInt,
|
||||
StrFromUtf8,
|
||||
StrFromUtf8Range,
|
||||
|
@ -179,7 +179,7 @@ impl LowLevelWrapperType {
|
|||
Symbol::STR_ENDS_WITH => CanBeReplacedBy(StrEndsWith),
|
||||
Symbol::STR_SPLIT => CanBeReplacedBy(StrSplit),
|
||||
Symbol::STR_COUNT_GRAPHEMES => CanBeReplacedBy(StrCountGraphemes),
|
||||
Symbol::STR_COUNT_BYTES => CanBeReplacedBy(StrCountBytes),
|
||||
Symbol::STR_COUNT_UTF8_BYTES => CanBeReplacedBy(StrCountUtf8Bytes),
|
||||
Symbol::STR_FROM_UTF8 => WrapperIsRequired,
|
||||
Symbol::STR_FROM_UTF8_RANGE => WrapperIsRequired,
|
||||
Symbol::STR_TO_UTF8 => CanBeReplacedBy(StrToUtf8),
|
||||
|
|
|
@ -1191,7 +1191,7 @@ define_builtins! {
|
|||
33 STR_TO_I8: "toI8"
|
||||
34 STR_TO_SCALARS: "toScalars"
|
||||
35 STR_GET_UNSAFE: "getUnsafe"
|
||||
36 STR_COUNT_BYTES: "countBytes"
|
||||
36 STR_COUNT_UTF8_BYTES: "countUtf8Bytes"
|
||||
37 STR_SUBSTRING_UNSAFE: "substringUnsafe"
|
||||
38 STR_SPLIT_FIRST: "splitFirst"
|
||||
39 STR_SPLIT_LAST: "splitLast"
|
||||
|
|
|
@ -887,7 +887,7 @@ pub fn lowlevel_borrow_signature(arena: &Bump, op: LowLevel) -> &[bool] {
|
|||
// - arguments that we may want to update destructively must be Owned
|
||||
// - other refcounted arguments are Borrowed
|
||||
match op {
|
||||
ListLen | StrIsEmpty | StrToScalars | StrCountGraphemes | StrCountBytes => {
|
||||
ListLen | StrIsEmpty | StrToScalars | StrCountGraphemes | StrCountUtf8Bytes => {
|
||||
arena.alloc_slice_copy(&[borrowed])
|
||||
}
|
||||
ListWithCapacity => arena.alloc_slice_copy(&[irrelevant]),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue