From 3cbacbd675d373edc83dd8f20be7cb7efbb3a506 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 16 Sep 2024 14:04:51 -0400 Subject: Add some basic pattern matching/suffix code for paths --- environment.c | 8 ++++++++ test/paths.tm | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/environment.c b/environment.c index 10aa0b58..d3e27069 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 946526bb..4ef0b028 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: -- cgit v1.2.3