Update examples

This commit is contained in:
Bruce Hill 2024-09-15 16:53:42 -04:00
parent 835eb7e896
commit 0060686646
3 changed files with 25 additions and 25 deletions

View File

@ -7,7 +7,7 @@ _HELP := "
"
func parse_ini(path:Path)->{Text:{Text:Text}}:
text := path:read()
text := path:read():or_exit("Could not read INI file: $\[31;1]$(path.text_content)$\[]")
sections := {:Text:@{Text:Text}}
current_section := @{:Text:Text}
sections:set("", current_section)
@ -37,25 +37,23 @@ func main(path:Path, key:Text):
$_USAGE
")
if not path:is_file() or path:is_pipe():
exit("Could not read file: $(path.text_content)")
data := parse_ini(path)
if keys.length < 1 or keys[1] == '*':
!! $data
return
section := keys[1]:lower()
if not data:has(section):
exit("Invalid section name: $section; valid names: $(", ":join([k:quoted() for k in data.keys]))")
section_data := data:get(section)
section_data := data:get(section):or_exit("
Invalid section name: $\[31;1]$section$\[]
Valid names: $\[1]$(", ":join([k:quoted() for k in data.keys]))$\[]
")
if keys.length < 2 or keys[2] == '*':
!! $section_data
return
section_key := keys[2]:lower()
if not section_data:has(section_key):
exit("Invalid key: $section_key; valid keys: $(", ":join(section_data.keys))")
say(section_data:get(section_key))
value := section_data:get(section_key):or_exit("
Invalid key: $\[31;1]$section_key$\[]
Valid keys: $\[1]$(", ":join([s:quoted() for s in section_data.keys]))$\[]
")
say(value)

View File

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

View File

@ -82,7 +82,7 @@ func main(files:[Path], width=80, inplace=no, min_split=3, rewrap=yes, hyphen=UN
files = [(/dev/stdin)]
for file in files:
text := file:read()
text := file:read():or_exit("Could not read file: $(file.text_content)")
if rewrap:
text = unwrap(text)