aboutsummaryrefslogtreecommitdiff
path: root/examples/tomodeps.tm
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-09-15 16:53:42 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-09-15 16:53:42 -0400
commit0060686646561b099e3c8b9908d82cc22eba433a (patch)
treeaf28f64b57252fdbf8262adfcc625c58dedc43fa /examples/tomodeps.tm
parent835eb7e89627eea923bfd57bdacba7065c6b1d4c (diff)
Update examples
Diffstat (limited to 'examples/tomodeps.tm')
-rw-r--r--examples/tomodeps.tm26
1 files changed, 14 insertions, 12 deletions
diff --git a/examples/tomodeps.tm b/examples/tomodeps.tm
index a427c5f9..e3354136 100644
--- a/examples/tomodeps.tm
+++ b/examples/tomodeps.tm
@@ -15,13 +15,14 @@ func _get_file_dependencies(file:Path)->{Dependency}:
return {:Dependency}
deps := {:Dependency}
- for line in file:read():lines():
- if line:matches($/use {..}.tm/):
- file_import := Path.from_unsafe_text(line:replace($/use {..}/, "\1")):resolved(relative_to=file)
- deps:add(Dependency.File(file_import))
- else if line:matches($/use {id}/):
- module_name := line:replace($/use {..}/, "\1")
- deps:add(Dependency.Module(module_name))
+ if lines := file:by_line():
+ for line in lines:
+ if line:matches($/use {..}.tm/):
+ file_import := Path.from_unsafe_text(line:replace($/use {..}/, "\1")):resolved(relative_to=file)
+ deps:add(Dependency.File(file_import))
+ else if line:matches($/use {id}/):
+ module_name := line:replace($/use {..}/, "\1")
+ deps:add(Dependency.Module(module_name))
return deps
func _build_dependency_graph(dep:Dependency, dependencies:&{Dependency:{Dependency}}):
@@ -38,9 +39,10 @@ func _build_dependency_graph(dep:Dependency, dependencies:&{Dependency:{Dependen
return
unvisited := {:Path}
- for line in files_path:read():lines():
- tm_path := Path.from_unsafe_text(line):resolved(relative_to=(~/.local/src/tomo/$module/))
- unvisited:add(tm_path)
+ if lines := files_path:by_line():
+ for line in lines:
+ tm_path := Path.from_unsafe_text(line):resolved(relative_to=(~/.local/src/tomo/$module/))
+ unvisited:add(tm_path)
module_deps := {:Dependency}
visited := {:Path}
@@ -87,7 +89,7 @@ func _draw_tree(dep:Dependency, dependencies:{Dependency:{Dependency}}, already_
child_prefix := prefix ++ (if is_last: " " else: "│ ")
- children := dependencies:get(dep, {:Dependency})
+ children := dependencies:get(dep):or_else({:Dependency})
for i,child in children.items:
is_child_last := (i == children.length)
_draw_tree(child, dependencies, already_printed, child_prefix, is_child_last)
@@ -96,7 +98,7 @@ func draw_tree(dep:Dependency, dependencies:{Dependency:{Dependency}}):
printed := {:Dependency}
say(_printable_name(dep))
printed:add(dep)
- deps := dependencies:get(dep, {:Dependency})
+ deps := dependencies:get(dep):or_else({:Dependency})
for i,child in deps.items:
is_child_last := (i == deps.length)
_draw_tree(child, dependencies, already_printed=&printed, is_last=is_child_last)