Initial commit
This commit is contained in:
commit
a6272848f9
379 changed files with 74829 additions and 0 deletions
133
build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs
Normal file
133
build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
import { toList, CustomType as $CustomType, isEqual } from "../gleam.mjs";
|
||||
import * as $list from "../gleam/list.mjs";
|
||||
import {
|
||||
add as append_tree,
|
||||
concat as from_strings,
|
||||
concat,
|
||||
identity as from_string,
|
||||
identity as to_string,
|
||||
length as byte_size,
|
||||
lowercase,
|
||||
uppercase,
|
||||
graphemes as do_to_graphemes,
|
||||
split,
|
||||
string_replace as replace,
|
||||
} from "../gleam_stdlib.mjs";
|
||||
|
||||
export {
|
||||
append_tree,
|
||||
byte_size,
|
||||
concat,
|
||||
from_string,
|
||||
from_strings,
|
||||
lowercase,
|
||||
replace,
|
||||
split,
|
||||
to_string,
|
||||
uppercase,
|
||||
};
|
||||
|
||||
class All extends $CustomType {}
|
||||
|
||||
/**
|
||||
* Prepends some `StringTree` onto the start of another.
|
||||
*
|
||||
* Runs in constant time.
|
||||
*/
|
||||
export function prepend_tree(tree, prefix) {
|
||||
return append_tree(prefix, tree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an empty `StringTree`. Useful as the start of a pipe chaining many
|
||||
* trees together.
|
||||
*/
|
||||
export function new$() {
|
||||
return from_strings(toList([]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepends a `String` onto the start of some `StringTree`.
|
||||
*
|
||||
* Runs in constant time.
|
||||
*/
|
||||
export function prepend(tree, prefix) {
|
||||
return append_tree(from_string(prefix), tree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends a `String` onto the end of some `StringTree`.
|
||||
*
|
||||
* Runs in constant time.
|
||||
*/
|
||||
export function append(tree, second) {
|
||||
return append_tree(tree, from_string(second));
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins the given trees into a new tree separated with the given string.
|
||||
*/
|
||||
export function join(trees, sep) {
|
||||
let _pipe = trees;
|
||||
let _pipe$1 = $list.intersperse(_pipe, from_string(sep));
|
||||
return concat(_pipe$1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a `StringTree` to a new one with the contents reversed.
|
||||
*/
|
||||
export function reverse(tree) {
|
||||
let _pipe = tree;
|
||||
let _pipe$1 = to_string(_pipe);
|
||||
let _pipe$2 = do_to_graphemes(_pipe$1);
|
||||
let _pipe$3 = $list.reverse(_pipe$2);
|
||||
return from_strings(_pipe$3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two string trees to determine if they have the same textual
|
||||
* content.
|
||||
*
|
||||
* Comparing two string trees using the `==` operator may return `False` even
|
||||
* if they have the same content as they may have been build in different ways,
|
||||
* so using this function is often preferred.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* from_strings(["a", "b"]) == from_string("ab")
|
||||
* // -> False
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* is_equal(from_strings(["a", "b"]), from_string("ab"))
|
||||
* // -> True
|
||||
* ```
|
||||
*/
|
||||
export function is_equal(a, b) {
|
||||
return isEqual(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inspects a `StringTree` to determine if it is equivalent to an empty string.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* from_string("ok") |> is_empty
|
||||
* // -> False
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* from_string("") |> is_empty
|
||||
* // -> True
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* from_strings([]) |> is_empty
|
||||
* // -> True
|
||||
* ```
|
||||
*/
|
||||
export function is_empty(tree) {
|
||||
return isEqual(from_string(""), tree);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue