AWK is awesome!

This commit is contained in:
Ev Bogdanov 2017-08-19 17:38:08 +03:00
parent f00781edb4
commit 77dd6b1d66

54
bin/t2s
View file

@ -1,26 +1,42 @@
#!/usr/bin/env python3 #!/usr/bin/env bash
import sys awk -v n_spaces="$1" '
DEFAULT_N_SPACES = 4 BEGIN {
TAB, SPACE = ' ', ' ' tab = " "
space = " "
try: if (n_spaces < 1) {
n_spaces = int(sys.argv[1]) n_spaces = 4
except: }
n_spaces = DEFAULT_N_SPACES
if n_spaces < 1: spaces_per_tab = ""
n_spaces = DEFAULT_N_SPACES for (i = 1; i <= n_spaces; i += 1) {
spaces_per_tab = spaces_per_tab space
}
}
for line in sys.stdin: function spaces_for_n_tabs(n) {
line = line.rstrip() spaces = ""
n_tabs = 0 while (n--) {
spaces = spaces spaces_per_tab
}
return spaces
}
for ch in line: function tabs_to_spaces(line) {
if ch != TAB: n_tabs = 0
break for (i = 1; i <= length(line); i += 1) {
n_tabs += 1 if (substr(line, i, 1) != tab) {
break
}
n_tabs += 1
}
return spaces_for_n_tabs(n_tabs) substr(line, i)
}
spaces = SPACE * n_spaces * n_tabs {
print(spaces, line[n_tabs:], sep='') print tabs_to_spaces($0)
}
'