TABLEやULは自動で設定できないのか?
簡単なテキストからHtmlへの変換を使っていると,だんだん気がすまなくなってきます.表 (TABLE) や一般的なリスト (UL) を使いたくなるかです.そこで,出来る限り簡単に処理できるスクリプトを考えてみました.表示の都合上,一部のタグは全角で表示されています.
考え方としては,
<TABLE>
1 2 3
4 5 6
</TABLE>
<UL>
1
2
3
4
5
</UL>
のような簡単なタブ区切りのデータを
のように自動的にHtmlに変換しようというわけです.
もっと簡単にしたいのですが,私の力ではこれが限界です.色々改良してみて下さい.
# Text To HTML
BEGIN {
split(ARGV[1], f, ".")
outfile = f[1]".htm"
outfile2= f[1]".hd"
FS = "\t"
tb = 0
# Data in <TABLE> should be separated by tabs.
# Data in <UL> should be tab(s) and one sentence.
}
NR==1 {
print "<HTML><HEAD><TITLE>" > outfile
print $0 > outfile
print "</TITLE></HEAD><BODY>" > outfile
print "<H2>"$0"</H2><BR>" > outfile
print "<A HREF=./"outfile"> "$0" </A></P>" > outfile2
# outfile2 にリンクのための情報を打ち出す
}
NR > 1 {
if ($0== "<TABLE>") { tb = 1 }
else if ($0== "</TABLE>"){ tb = 2 }
else if ($0 == "<UL>") { tb = 3 }
else if ($0 == "</UL>") { tb = 4 }
#
if (tb == 0) {
print $0"<BR>" > outfile
}
else if (tb == 1) {
if ($0 == "<TABLE>") {
print "<TABLE BORDER=1 CELLSPACING=1><TBODY>" > outfile
}
else {
print "<TR>" > outfile
tdn = split($0, td, "\t")
for(i=1; i<=tdn; i++) {
print "<TD>"td[i]"</TD>" > outfile
td[i] = ""
}
}
}
else if (tb == 2) {
print "</TR></TBODY></TABLE></P>" > outfile
tb = 0
}
else if (tb == 3) {
if ($0 == "<UL>") {
print "<UL>" > outfile
}
else {
for (k=1; k<=NF;"k++) {
if ($k == "") { l++ }
else if (l == prel) {
printf("<LI>%s\n", $k) > outfile
}
else if (l > prel) {
printf("<UL>\n<LI>%s\n", $k) > outfile
prel = l
}
else if (l < prel) {
printf("</UL>\n<LI>%s\n", $k) > outfile
prel = l
}
}
k = 0; l = 0
}
}
else if (tb == 4) {
for (m=1; m<=prel; m++) { printf("</UL>") > outfile }
prel = 0
print "</UL></P>" > outfile
tb = 0
}
printf("%d\r",NR)
}
END {
print "<HR><P></P><A HREF=./index.html>ホームページに戻る</A></P>" > outfile
print "</BODY></HTML>" > outfile
}
JGAWKホームページに戻る