-module(gleam@string_tree). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gleam/string_tree.gleam"). -export([append_tree/2, prepend_tree/2, from_strings/1, new/0, concat/1, from_string/1, prepend/2, append/2, to_string/1, byte_size/1, join/2, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). -export_type([string_tree/0, direction/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type string_tree() :: any(). -type direction() :: all. -file("src/gleam/string_tree.gleam", 61). ?DOC( " Appends some `StringTree` onto the end of another.\n" "\n" " Runs in constant time.\n" ). -spec append_tree(string_tree(), string_tree()) -> string_tree(). append_tree(Tree, Suffix) -> gleam_stdlib:iodata_append(Tree, Suffix). -file("src/gleam/string_tree.gleam", 48). ?DOC( " Prepends some `StringTree` onto the start of another.\n" "\n" " Runs in constant time.\n" ). -spec prepend_tree(string_tree(), string_tree()) -> string_tree(). prepend_tree(Tree, Prefix) -> gleam_stdlib:iodata_append(Prefix, Tree). -file("src/gleam/string_tree.gleam", 69). ?DOC( " Converts a list of strings into a `StringTree`.\n" "\n" " Runs in constant time.\n" ). -spec from_strings(list(binary())) -> string_tree(). from_strings(Strings) -> gleam_stdlib:identity(Strings). -file("src/gleam/string_tree.gleam", 24). ?DOC( " Create an empty `StringTree`. Useful as the start of a pipe chaining many\n" " trees together.\n" ). -spec new() -> string_tree(). new() -> gleam_stdlib:identity([]). -file("src/gleam/string_tree.gleam", 77). ?DOC( " Joins a list of trees into a single tree.\n" "\n" " Runs in constant time.\n" ). -spec concat(list(string_tree())) -> string_tree(). concat(Trees) -> gleam_stdlib:identity(Trees). -file("src/gleam/string_tree.gleam", 85). ?DOC( " Converts a string into a `StringTree`.\n" "\n" " Runs in constant time.\n" ). -spec from_string(binary()) -> string_tree(). from_string(String) -> gleam_stdlib:identity(String). -file("src/gleam/string_tree.gleam", 32). ?DOC( " Prepends a `String` onto the start of some `StringTree`.\n" "\n" " Runs in constant time.\n" ). -spec prepend(string_tree(), binary()) -> string_tree(). prepend(Tree, Prefix) -> gleam_stdlib:iodata_append(gleam_stdlib:identity(Prefix), Tree). -file("src/gleam/string_tree.gleam", 40). ?DOC( " Appends a `String` onto the end of some `StringTree`.\n" "\n" " Runs in constant time.\n" ). -spec append(string_tree(), binary()) -> string_tree(). append(Tree, Second) -> gleam_stdlib:iodata_append(Tree, gleam_stdlib:identity(Second)). -file("src/gleam/string_tree.gleam", 94). ?DOC( " Turns a `StringTree` into a `String`\n" "\n" " This function is implemented natively by the virtual machine and is highly\n" " optimised.\n" ). -spec to_string(string_tree()) -> binary(). to_string(Tree) -> unicode:characters_to_binary(Tree). -file("src/gleam/string_tree.gleam", 100). ?DOC(" Returns the size of the `StringTree` in bytes.\n"). -spec byte_size(string_tree()) -> integer(). byte_size(Tree) -> erlang:iolist_size(Tree). -file("src/gleam/string_tree.gleam", 104). ?DOC(" Joins the given trees into a new tree separated with the given string.\n"). -spec join(list(string_tree()), binary()) -> string_tree(). join(Trees, Sep) -> _pipe = Trees, _pipe@1 = gleam@list:intersperse(_pipe, gleam_stdlib:identity(Sep)), gleam_stdlib:identity(_pipe@1). -file("src/gleam/string_tree.gleam", 115). ?DOC( " Converts a `StringTree` to a new one where the contents have been\n" " lowercased.\n" ). -spec lowercase(string_tree()) -> string_tree(). lowercase(Tree) -> string:lowercase(Tree). -file("src/gleam/string_tree.gleam", 122). ?DOC( " Converts a `StringTree` to a new one where the contents have been\n" " uppercased.\n" ). -spec uppercase(string_tree()) -> string_tree(). uppercase(Tree) -> string:uppercase(Tree). -file("src/gleam/string_tree.gleam", 127). ?DOC(" Converts a `StringTree` to a new one with the contents reversed.\n"). -spec reverse(string_tree()) -> string_tree(). reverse(Tree) -> string:reverse(Tree). -file("src/gleam/string_tree.gleam", 145). ?DOC(" Splits a `StringTree` on a given pattern into a list of trees.\n"). -spec split(string_tree(), binary()) -> list(string_tree()). split(Tree, Pattern) -> string:split(Tree, Pattern, all). -file("src/gleam/string_tree.gleam", 156). ?DOC(" Replaces all instances of a pattern with a given string substitute.\n"). -spec replace(string_tree(), binary(), binary()) -> string_tree(). replace(Tree, Pattern, Substitute) -> gleam_stdlib:string_replace(Tree, Pattern, Substitute). -file("src/gleam/string_tree.gleam", 182). ?DOC( " Compares two string trees to determine if they have the same textual\n" " content.\n" "\n" " Comparing two string trees using the `==` operator may return `False` even\n" " if they have the same content as they may have been build in different ways,\n" " so using this function is often preferred.\n" "\n" " ## Examples\n" "\n" " ```gleam\n" " from_strings([\"a\", \"b\"]) == from_string(\"ab\")\n" " // -> False\n" " ```\n" "\n" " ```gleam\n" " is_equal(from_strings([\"a\", \"b\"]), from_string(\"ab\"))\n" " // -> True\n" " ```\n" ). -spec is_equal(string_tree(), string_tree()) -> boolean(). is_equal(A, B) -> string:equal(A, B). -file("src/gleam/string_tree.gleam", 206). ?DOC( " Inspects a `StringTree` to determine if it is equivalent to an empty string.\n" "\n" " ## Examples\n" "\n" " ```gleam\n" " from_string(\"ok\") |> is_empty\n" " // -> False\n" " ```\n" "\n" " ```gleam\n" " from_string(\"\") |> is_empty\n" " // -> True\n" " ```\n" "\n" " ```gleam\n" " from_strings([]) |> is_empty\n" " // -> True\n" " ```\n" ). -spec is_empty(string_tree()) -> boolean(). is_empty(Tree) -> string:is_empty(Tree).