#!/bin/rc -e rfork E # index -- add ids to headings and print index to stderr flagfmt=s args='[file ...]' if(! ifs=() eval `{aux/getflags $*}){ aux/usage exit usage } fn source{ if(! ~ $#* 0) cat $* if not cat } source $* | awk ' /.*<\/h[0-9]/ { heading($0) next } // { open = 1 s = $0 next } open && /<\/h[0-9]>/ { open = 0 s = s "\n" $0 heading(s) next } open { s = s " " $0; next } { print } function heading(s) { i = s sub("^.*", "", i) sub(".*$", "", i) i = toascii(i) sub("^", " ", s) sub("<\/h[0-9]>$", "", s) print s > "/dev/stderr" } } function toascii(s) { s = tolower(s) gsub("[ÀÁÂÃÄÅàáâãäå]", "a", s) gsub("[Ææ]", "ae", s) gsub("[Çç]", "c", s) gsub("[Ðð]", "dh", s) gsub("[ÈÉÊËèéêë]", "e", s) gsub("[ÌÍÎÏìíîï]", "i", s) gsub("[Ññ]", "n", s) gsub("[ÒÓÔÕÖØòóôõöø]", "o", s) gsub("[ß]", "ss", s) gsub("[Þþ]", "th", s) gsub("[ÙÚÛÜùúûü]", "u", s) gsub("[×]", "x", s) gsub("[Ýýÿ]", "y", s) gsub("[/]", "-", s) gsub("[ \n]+\\+[ \n]+", "+", s) gsub("[ \n]+=[ \n]+", "=", s) gsub("[ \n]+", "-", s) gsub("[^=-+a-z0-9_ ]", "", s) gsub("-+", "-", s) return s } '