ref: da05aec370be82e1a5b52e0fa576a33594322d24
dir: /schtml/
#!/bin/rc
rfork e
# declare your intentions:
# page_width = page width
# column_width = width of dialogue
# mezzo_width = width of everything else
page_width = 72
column_width = 40
mezzo_width = 60
fn ind_math {
echo '('$page_width-$1')'/2 | bc
}
c_ind = `{ind_math $column_width}
m_ind = `{ind_math $mezzo_width}
sw = 0
file = $1
if (~ $#file 0) { echo needs a file; exit }
if (! test -f $file) { echo bad file; exit }
ln = `{ echo `{ wc -l < $file} + 1 | bc}
fn rl { sed -n $x^p $file }
fn indenter {
for (i in `{seq $1} ) echo -n ' '
}
fn chardent {
ch = ` { echo $rl | sed -e 's,@,,' -e 's,#,,'}
l_len = `{ echo $ch | awk '{print length}' }
ch_len = `{ ind_math $l_len }
for (n in `{ seq $ch_len } ) echo -n ' '
}
fn diag {
rl = `{rl}
while (! ~ $#rl 0) {
rl = `{rl}
echo $"rl
x = `{ echo $x + 1 | bc }
}
}
fn format_diag {
diag | fmt -l $column_width -i `{echo $c_ind^*2 |bc } | awk '{gsub(/\t/, " "); print }'
}
fn format_mezzo {
diag | fmt -l $mezzo_width -i `{echo $m_ind^*2 |bc } | awk '{gsub(/\t/, " "); print }'
}
fn caser {
switch($1) {
case @* ; echo '<p class="char">'; chardent ; echo -n $"ch^: ; echo '</p>'; sw = d
case '#'* ; echo '<h2>'; chardent ; echo -n $"ch ;echo '</h2>'; echo
case '' ; sw = m
case *
if (~ $sw d ) {
echo '<p class="diag">'
format_diag
echo '</p>'
sw = 0
}
if (~ $sw m ) {
echo '<p>'
format_mezzo
echo '</p>'
sw = 0
}
}
}
# TITLE DESIGN
x= 1; rl = `{rl}
chardent; echo '<h1>' $"ch '</h1>'
x= 2; rl = `{rl}
chardent; echo '<p>' $"ch '</p>'
echo; echo; echo
# BEGIN
x = 3
while (! test $x -gt $ln) {
rl = `{rl}
caser $"rl
diag_l=0
x = `{ echo $x + 1 | bc }
}