aboutsummaryrefslogtreecommitdiff
path: root/environment.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-09-09 22:16:40 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-09-09 22:16:40 -0400
commitd356309023fce996a549440aa14e3239f909fe33 (patch)
tree1c797f41be25c457a09b9187550136afd8550d96 /environment.c
parent36572573300eaba9d0adbb63fc55067aa0fe5e0c (diff)
Add (/path):by_line()
Diffstat (limited to 'environment.c')
-rw-r--r--environment.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/environment.c b/environment.c
index 45207da1..94401ec9 100644
--- a/environment.c
+++ b/environment.c
@@ -69,6 +69,16 @@ env_t *new_compilation_unit(CORD *libname)
.next=new(arg_t, .name="step", .type=INT_TYPE, .default_val=FakeAST(Int, .str="1")))));
}
+ type_t *next_line_type;
+ {
+ next_line_type = Type(
+ EnumType, .name="NextLine", .env=namespace_env(env, "NextLine"),
+ .tags=new(tag_t, .name="Done", .tag_value=0, .type=Type(StructType, .name="NextLine$Done"),
+ .next=new(tag_t, .name="Next", .tag_value=1, .type=Type(StructType, .name="NextLine$Next",
+ .env=namespace_env(env, "NextLine$Next"),
+ .fields=new(arg_t, .name="line", .type=TEXT_TYPE)))));
+ }
+
{
env_t *thread_env = namespace_env(env, "Thread");
THREAD_TYPE = Type(StructType, .name="Thread", .env=thread_env, .opaque=true);
@@ -245,12 +255,14 @@ env_t *new_compilation_unit(CORD *libname)
{"reversed", "Range$reversed", "func(range:Range)->Range"},
{"by", "Range$by", "func(range:Range, step:Int)->Range"},
)},
+ {"NextLine", next_line_type, "NextLine_t", "NextLine", {}},
{"Pattern", Type(TextType, .lang="Pattern", .env=namespace_env(env, "Pattern")), "Pattern_t", "Pattern$info", TypedArray(ns_entry_t,
{"escape_text", "Pattern$escape_text", "func(text:Text)->Pattern"},
)},
{"Path", Type(TextType, .lang="Path", .env=namespace_env(env, "Path")), "Text_t", "Text$info", TypedArray(ns_entry_t,
{"append", "Path$append", "func(path:Path, text:Text, permissions=0o644_i32)"},
{"base_name", "Path$base_name", "func(path:Path)->Text"},
+ {"by_line", "Path$by_line", "func(path:Path)->func()->NextLine"},
{"children", "Path$children", "func(path:Path, include_hidden=no)->[Path]"},
{"create_directory", "Path$create_directory", "func(path:Path, permissions=0o644_i32)"},
{"escape_path", "Path$escape_path", "func(path:Path)->Path"},