diff --git a/environment.c b/environment.c index 10aa0b5..d3e2706 100644 --- a/environment.c +++ b/environment.c @@ -290,6 +290,14 @@ env_t *new_compilation_unit(CORD *libname) {"write_bytes", "Path$write_bytes", "func(path:Path, bytes:[Byte], permissions=0o644[32])"}, {"write_unique", "Path$write_unique", "func(path:Path, text:Text)->Path"}, {"write_unique_bytes", "Path$write_unique_bytes", "func(path:Path, bytes:[Byte])->Path"}, + + // Text methods: + {"ends_with", "Text$ends_with", "func(path:Path, suffix:Text)->Bool"}, + {"has", "Text$has", "func(path:Path, pattern:Pattern)->Bool"}, + {"matches", "Text$matches", "func(path:Path, pattern:Pattern)->Bool"}, + {"replace", "Text$replace", "func(path:Path, pattern:Pattern, replacement:Text, backref=$/\\/, recursive=yes)->Path"}, + {"replace_all", "Text$replace_all", "func(path:Path, replacements:{Pattern:Text}, backref=$/\\/, recursive=yes)->Path"}, + {"starts_with", "Text$starts_with", "func(path:Path, prefix:Text)->Bool"}, )}, {"Shell", Type(TextType, .lang="Shell", .env=namespace_env(env, "Shell")), "Shell_t", "Shell$info", TypedArray(ns_entry_t, {"escape_int", "Int$value_as_text", "func(i:Int)->Shell"}, diff --git a/test/paths.tm b/test/paths.tm index 946526b..4ef0b02 100644 --- a/test/paths.tm +++ b/test/paths.tm @@ -81,6 +81,12 @@ func main(): >> (../foo):parent() = (../) + >> (./foo.txt):ends_with(".txt") + = yes + >> (./foo.txt):matches($|{..}/foo{..}|) + = yes + >> (./foo.txt):replace($/.txt/, ".md") + = (./foo.md) # Concatenation tests: !! Basic relative path concatenation: