akkadian-lang/src/scripts/tab2md.awk

86 lines
1.1 KiB
Awk

#!/usr/bin/gawk -f
BEGIN {
f="/dev/stdout"
x_col_width["default"] = 15;
x_col_width[1] = 6;
x_col_width[2] = 7;
}
function col_width(i) {
if (i in x_col_width) {
return x_col_width[i];
}
return x_col_width["default"];
}
function convert_word(a) {
gsub(/--/, "-\\-", a)
gsub(/v/, "$v_k$", a);
gsub(/w/, "$v'_k$", a);
gsub(/x/, "---", a);
gsub(/v̅/, "$\\overbar{v_k}$", a);
return a;
}
/^# / {
gsub(/^# /,"### ");
new_head=1;
print;
next;
}
/^.+$/ {
split($0,l,/\t+/);
col_num = length(l);
for (i = 1; i <= length(l); ++i) {
if (new_head) {
z = l[i];
} else {
z = convert_word(l[i]);
}
if (i == 1) {
printf(" ");
}
printf("%-" col_width(i) "s", z);
if (i < length(l)) {
printf(" | ");
}
}
printf("\n");
if (new_head == 1) {
new_head = 0;
head_done = 1;
} else {
next;
}
}
head_done == 1 {
head_done = 0;
for( i = 1; i <= col_num; ++i) {
if (i > 1) {
printf("|");
}
printf(":");
for (j = 0; j < col_width(i); ++j) {
printf("-");
}
if (i == 2) {
printf(":");
} else {
printf("-");
}
}
printf("\n");
next;
}
{
print;
}