diff options
Diffstat (limited to 'tools/format.nom')
| -rwxr-xr-x | tools/format.nom | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/format.nom b/tools/format.nom new file mode 100755 index 0000000..8355176 --- /dev/null +++ b/tools/format.nom @@ -0,0 +1,31 @@ +#!/usr/bin/env nomsu -V5.12.12.8 +# + Auto-format Nomsu code. Usage: + nomsu -t format [-i] file1 file2... + + If the "-i" flag is used, the file will be edited in-place. + If no files are passed in, this will read from stdin. + +use "lib/os.nom" + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +$filenames = $(COMMAND LINE ARGS).extras +if ((#$filenames) == 0): + say "Warning: reading from stdin (ctrl-d to abort). To avoid this message, use nomsu -t format -" + $filenames = ["stdin"] + +for $filename in $filenames: + $file = (read file $filename) + unless $file: + barf "File does not exist: \$filename" + $leading_indent = ($file|matching "[\n]*([ ]*)") + $code = (NomsuCode from ($Source $filename 1 (size of $file)) $file) + $tree = ($code parsed) + $formatted = " + \$leading_indent\((($tree as nomsu)|text)|with "\n" -> "\n\$leading_indent")" + + if $(COMMAND LINE ARGS)."-i": + write $formatted to file $filename + ..else: + say $formatted inline |
