shithub: scric

ref: da05aec370be82e1a5b52e0fa576a33594322d24
dir: /schtml/

View raw version
#!/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 }

}