Home | History | Annotate | Line # | Download | only in testdir
tt.15 revision 1.1.1.1.12.1
      1           1.1  christos # fmt - format
      2           1.1  christos #    input:  text
      3           1.1  christos #    output: text formatted into lines of <= 72 characters
      4           1.1  christos 
      5           1.1  christos BEGIN {
      6           1.1  christos         maxlen = 72
      7           1.1  christos }
      8           1.1  christos 
      9           1.1  christos /^[ \t]/ { printline(); print; next }      # verbatim
     10           1.1  christos ###/^ +/ { printline();  }			# whitespace == break
     11           1.1  christos 
     12           1.1  christos /./  { for (i = 1; i <= NF; i++) addword($i); next }
     13           1.1  christos 
     14           1.1  christos /^$/ { printline(); print "" }
     15           1.1  christos END  { printline() }
     16           1.1  christos 
     17           1.1  christos function addword(w) {
     18  1.1.1.1.12.1  perseant     print "adding [", w, "] ", length(w), length(line), maxlen
     19           1.1  christos     if (length(line) + length(w) > maxlen)
     20           1.1  christos         printline()
     21           1.1  christos     if (length(w) > 2 && ( w ~ /[\.!]["?)]?$/ || w ~ /[?!]"?$/) &&
     22           1.1  christos 		w !~ /^(Mr|Dr|Ms|Mrs|vs|Ph.D)\.$/)
     23           1.1  christos         w = w " "
     24           1.1  christos     line = line " " w
     25           1.1  christos }
     26           1.1  christos 
     27           1.1  christos function printline() {
     28           1.1  christos     if (length(line) > 0) {
     29           1.1  christos         sub(/ +$/, "", line)
     30           1.1  christos         print substr(line, 2)   # removes leading blank
     31           1.1  christos         line = ""
     32           1.1  christos     }
     33           1.1  christos }
     34