diff options
author | John Ankarström <john@ankarstrom.se> | 2021-01-31 12:49:22 +0000 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2021-01-31 12:49:22 +0000 |
commit | dfb9b24814264abb429e4d289685654c469ff362 (patch) | |
tree | 9e4686fc56cfbb92ded6e514204210775da794b7 | |
parent | 2f7147aa05cbdcb8b1b2470877dffc663cb7a83e (diff) | |
download | em-dfb9b24814264abb429e4d289685654c469ff362.tar.gz |
Add index script
Index automatically adds appropriate ids to HTML headings
and prints an index of all headings on stderr (unless given the
-s, silent, option).
-rwxr-xr-x | index | 74 | ||||
-rw-r--r-- | mkfile | 9 | ||||
-rw-r--r-- | test.em | 2 | ||||
-rw-r--r-- | test.html | 7 |
4 files changed, 89 insertions, 3 deletions
@@ -0,0 +1,74 @@ +#!/bin/rc -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]>.*<\/h[0-9]/ { + heading($0) + next + } + /<h[0-9]>/ { + 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("^.*<h[0-9]>", "", i) + sub("</h[0-9]>.*$", "", i) + i = toascii(i) + sub("^<h[0-9]", "& id=\"" i "\"", s) + print s + if (!ENVIRON["flags"]) { # if not silent mode + sub("^<h", "", s) + sub(" id=\"", " ", s) + 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("[^-a-z_ ]", "", s) + gsub("[ ]+", "-", s) + return s + } +' @@ -1,8 +1,13 @@ test.html: - path=(. /bin) em test.em > test.html + path=(. /bin) + ramfs -p + em test.em > /tmp/1 + htwrap -t /tmp/1 > /tmp/2 + index -s /tmp/2 > test.html README.html: README - path=(. /bin) em README > README.html + path=(. /bin) + em README > README.html install: cp em emcollect emparse htwrap /rc/bin/ @@ -8,6 +8,8 @@ Here is an asterisk at the end of a word*. Here is an *unfinished inline formatting tag. +== Meßerschmidts fiancé == + > Perhaps quotes could be regarded as lists. The paragraph goes on until a new "item" comes. > Here, a new paragraph is started. @@ -1,4 +1,7 @@ -<h1>Em example</h1> +<!DOCTYPE html> +<html> +<title>Em example</title> +<h1 id="em-example">Em example</h1> <p> This is an example of <i>em</i>. </p> @@ -11,6 +14,7 @@ Here is an asterisk at the end of a word*. <p> Here is an <i>unfinished inline formatting tag. </i></p> +<h2 id="messerschmidts-fiance">Meßerschmidts fiancé</h2> <blockquote> <p>Perhaps quotes could be regarded as lists. The paragraph goes on until a new "item" comes. @@ -57,3 +61,4 @@ definition code block with two lines </pre> +</html> |