Update examples
This commit is contained in:
parent
835eb7e896
commit
0060686646
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user