From 26024808f0d173fe209df60fac797305d016c019 Mon Sep 17 00:00:00 2001 From: Nick Krichevsky Date: Sun, 6 Oct 2024 13:38:53 -0400 Subject: [PATCH] Rename left/right variants to start/end --- src/gleam/string.gleam | 52 ++++++++++++++++++++++-------------- src/gleam_stdlib.mjs | 22 +++++++-------- test/gleam/string_test.gleam | 32 +++++++++++----------- 3 files changed, 59 insertions(+), 47 deletions(-) diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam index 200c4ab5..0cb18b5a 100644 --- a/src/gleam/string.gleam +++ b/src/gleam/string.gleam @@ -588,43 +588,55 @@ type Direction { Both } -/// Removes whitespace on the left of a `String`. +/// Removes whitespace at the start of a `String`. /// /// ## Examples /// /// ```gleam -/// trim_left(" hats \n") +/// trim_start(" hats \n") /// // -> "hats \n" /// ``` /// +pub fn trim_start(string: String) -> String { + do_trim_start(string) +} + +/// An alias for trim_start +@deprecated("Use trim_start. There is no behavior change") pub fn trim_left(string: String) -> String { - do_trim_left(string) + trim_start(string) } -@external(javascript, "../gleam_stdlib.mjs", "trim_left") -fn do_trim_left(string: String) -> String { +@external(javascript, "../gleam_stdlib.mjs", "trim_start") +fn do_trim_start(string: String) -> String { erl_trim(string, Leading) } -/// Removes whitespace on the right of a `String`. +/// Removes whitespace at the end of a `String`. /// /// ## Examples /// /// ```gleam -/// trim_right(" hats \n") +/// trim_end(" hats \n") /// // -> " hats" /// ``` /// +pub fn trim_end(string: String) -> String { + do_trim_end(string) +} + +/// An alias for trim_end +@deprecated("Use trim_end. There is no behavior change") pub fn trim_right(string: String) -> String { - do_trim_right(string) + trim_end(string) } -@external(javascript, "../gleam_stdlib.mjs", "trim_right") -fn do_trim_right(string: String) -> String { +@external(javascript, "../gleam_stdlib.mjs", "trim_end") +fn do_trim_end(string: String) -> String { erl_trim(string, Trailing) } -/// Like `trim_left`, but removes the specified chars on the left of a `String` +/// Like `trim_start`, but removes the specified chars at the start of a `String` /// /// ## Examples /// @@ -632,16 +644,16 @@ fn do_trim_right(string: String) -> String { /// trim_chars_left("..,hats,..", ".,") /// // -> "hats,.." /// ``` -pub fn trim_chars_left(string: String, charset: String) -> String { - do_trim_chars_left(string, charset) +pub fn trim_chars_start(string: String, charset: String) -> String { + do_trim_chars_start(string, charset) } -@external(javascript, "../gleam_stdlib.mjs", "trim_chars_left") -fn do_trim_chars_left(string: String, charset: String) -> String { +@external(javascript, "../gleam_stdlib.mjs", "trim_chars_start") +fn do_trim_chars_start(string: String, charset: String) -> String { erl_trim_chars(string, Leading, erl_to_graphemes(charset)) } -/// Like `trim_right`, but removes the specified chars on the right of a `String` +/// Like `trim_end`, but removes the specified chars at the end of a `String` /// /// ## Examples /// @@ -649,12 +661,12 @@ fn do_trim_chars_left(string: String, charset: String) -> String { /// trim_chars_right("..,hats,..", ".,") /// // -> "..,hats" /// ``` -pub fn trim_chars_right(string: String, charset: String) -> String { - do_trim_chars_right(string, charset) +pub fn trim_chars_end(string: String, charset: String) -> String { + do_trim_chars_end(string, charset) } -@external(javascript, "../gleam_stdlib.mjs", "trim_chars_right") -fn do_trim_chars_right(string: String, charset: String) -> String { +@external(javascript, "../gleam_stdlib.mjs", "trim_chars_end") +fn do_trim_chars_end(string: String, charset: String) -> String { erl_trim_chars(string, Trailing, erl_to_graphemes(charset)) } diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index cbeaf843..557f7096 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -262,33 +262,33 @@ const unicode_whitespaces = [ "\u2029", // Paragraph separator ].join(""); -const left_trim_regex = new_left_trim_regexp(unicode_whitespaces); +const start_trim_regex = new_start_trim_regexp(unicode_whitespaces); const right_trim_regex = new_right_trim_regexp(unicode_whitespaces); export function trim(string) { - return trim_left(trim_right(string)); + return trim_start(trim_end(string)); } -export function trim_left(string) { - return string.replace(left_trim_regex, ""); +export function trim_start(string) { + return string.replace(start_trim_regex, ""); } -export function trim_right(string) { +export function trim_end(string) { return string.replace(right_trim_regex, ""); } export function trim_chars(string, charset) { - const trimmed_right = trim_chars_right(string, charset); - return trim_chars_left(trimmed_right, charset); + const trimmed_right = trim_chars_end(string, charset); + return trim_chars_start(trimmed_right, charset); } -export function trim_chars_left(string, charset) { - const trim_regexp = new_left_trim_regexp(charset); +export function trim_chars_start(string, charset) { + const trim_regexp = new_start_trim_regexp(charset); return string.replace(trim_regexp, "") } -export function trim_chars_right(string, charset) { +export function trim_chars_end(string, charset) { const trim_regexp = new_right_trim_regexp(charset); return string.replace(trim_regexp, "") @@ -974,7 +974,7 @@ export function bit_array_compare(first, second) { return new Lt(); // second has more items } -function new_left_trim_regexp(charset) { +function new_start_trim_regexp(charset) { return new RegExp(`^([${charset}]*)`, "g"); } diff --git a/test/gleam/string_test.gleam b/test/gleam/string_test.gleam index 12d364fe..aea3f2c3 100644 --- a/test/gleam/string_test.gleam +++ b/test/gleam/string_test.gleam @@ -164,51 +164,51 @@ pub fn trim_test() { |> should.equal("hats") } -pub fn trim_left_test() { +pub fn trim_start_test() { " hats \n" - |> string.trim_left + |> string.trim_start |> should.equal("hats \n") } -pub fn trim_left_rtl_test() { +pub fn trim_start_rtl_test() { " עברית " - |> string.trim_left + |> string.trim_start |> should.equal("עברית ") } -pub fn trim_right_rtl_test() { +pub fn trim_end_rtl_test() { " עברית " - |> string.trim_right + |> string.trim_end |> should.equal(" עברית") } -pub fn trim_right_test() { +pub fn trim_end_test() { " hats \n" - |> string.trim_right + |> string.trim_end |> should.equal(" hats") } -pub fn trim_chars_left_test() { +pub fn trim_chars_start_test() { ",..hats..," - |> string.trim_chars_left(",.") + |> string.trim_chars_start(",.") |> should.equal("hats..,") } -pub fn trim_chars_left_rtl_test() { +pub fn trim_chars_start_rtl_test() { "שמש" - |> string.trim_chars_left("ש") + |> string.trim_chars_start("ש") |> should.equal("מש") } -pub fn trim_chars_right_test() { +pub fn trim_chars_end_test() { ",..hats..," - |> string.trim_chars_right(",.") + |> string.trim_chars_end(",.") |> should.equal(",..hats") } -pub fn trim_chars_right_rtl_test() { +pub fn trim_chars_end_rtl_test() { "שמש" - |> string.trim_chars_right("ש") + |> string.trim_chars_end("ש") |> should.equal("שמ") }