Add some basic pattern matching/suffix code for paths

This commit is contained in:
Bruce Hill 2024-09-16 14:04:51 -04:00
parent c5396d65a8
commit 3cbacbd675
2 changed files with 14 additions and 0 deletions

View File

@ -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"},

View File

@ -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: