↑ Up |
# A basic version of grep use fs: ls, is_dir, is_file use regex: re use sys: argv function walk(path) return fn*|| try it = ls(path) catch e it = [] end for x in it if is_dir(x) for y in walk(x) yield y end elif is_file(x) yield x end end end end function grep(pattern,path) r = re(pattern) return fn*|| for id in walk(path) try s = read(id) catch e continue end for n,line in re("{n}").split(s).enum() if len(r.list(line))>0 yield [id,n,line] end end end end end function main pattern = argv[1] path = argv[2] for t in grep(pattern,path) print("File: {}\nLine: {}\n{}\n"%t) end end main()