diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-08-19 17:16:25 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-08-19 17:16:25 +0100 |
commit | 9789d26a5faa2ff284448387f5c6ff5131fef275 (patch) | |
tree | 56af9c6e40207581addf2810c46a774c6647e807 /src | |
parent | 1962beacc59f37c1db782e79e90358cb14315c18 (diff) | |
download | gleam_stdlib-9789d26a5faa2ff284448387f5c6ff5131fef275.tar.gz gleam_stdlib-9789d26a5faa2ff284448387f5c6ff5131fef275.zip |
Fix slice
Closes https://github.com/gleam-lang/gleam/issues/3499
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/string.gleam | 2 | ||||
-rw-r--r-- | src/gleam_stdlib.erl | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam index 07affd5..4eb8b85 100644 --- a/src/gleam/string.gleam +++ b/src/gleam/string.gleam @@ -230,7 +230,7 @@ pub fn slice(from string: String, at_index idx: Int, length len: Int) -> String } } -@external(erlang, "string", "slice") +@external(erlang, "gleam_stdlib", "slice") fn do_slice(string: String, idx: Int, len: Int) -> String { string |> to_graphemes diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl index 0b4aae5..0941a33 100644 --- a/src/gleam_stdlib.erl +++ b/src/gleam_stdlib.erl @@ -14,7 +14,7 @@ decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1, println/1, print_error/1, println_error/1, inspect/1, float_to_string/1, int_from_base_string/2, utf_codepoint_list_to_string/1, contains_string/2, - crop_string/2, base16_decode/1, string_replace/3, regex_replace/3 + crop_string/2, base16_decode/1, string_replace/3, regex_replace/3, slice/3 ]). %% Taken from OTP's uri_string module @@ -547,3 +547,9 @@ base16_decode(String) -> string_replace(String, Pattern, Replacement) -> string:replace(String, Pattern, Replacement, all). + +slice(String, Index, Length) -> + case string:slice(String, Index, Length) of + X when is_binary(X) -> X; + X when is_list(X) -> unicode:characters_to_binary(X) + end. |