]> git.plutz.net Git - clickslide/blob - autoslide.sh
ead295b3dcf14a524345c2923369962cc041674a
[clickslide] / autoslide.sh
1 #!/bin/sh
2
3 prev='' next='' idoff=0
4
5 "${0%/*}"/cgilite/html-sh.sed | {
6   line="$(line)"
7   while :; do 
8     tag="${tag}${line%%>*}"
9   
10     if [ "$line" = "${line%%>*}" ]; then
11       # $line did not contain ">" and thus was added to $tag entirely
12       if ! line="$(line)"; then
13         printf %s\\n "$tag"
14         break
15       fi
16       tag="${tag}
17   "
18     else
19       # $line is shortened by segment added to $tag
20       line="${line#*>}"
21       tag="${tag}>"
22     fi
23   
24     case $tag in
25       *\<slide\ *id=\"?*\"*\>*)
26         prev="$next"
27         next="${tag#*<slide }" next="${next#*id=\"}" next="${next%\"*}"
28         next="autoslide${idoff}"
29         idoff="$((idoff + 1))"
30         printf '%s<a class="nextslide" href="#%s">next</a><div class="slide" count="%i" id="%s" %s' \
31           "${tag%<slide *}" "$next" "$idoff" "$next" "${tag#*<slide }"
32         tag=''
33         ;;
34       *\<slide\ *\>*|*\<slide\>*)
35         prev="$next"
36         next="autoslide${idoff}"
37         idoff="$((idoff + 1))"
38         printf '%s<a class="nextslide" href="#%s">next</a><div class="slide" count="%i" id="%s" %s' \
39           "${tag%<slide*}" "$next" "$idoff" "$next" "${tag#*<slide}"
40         tag=''
41         ;;
42       *\</slide\>*)
43         printf '%s</div><a class="prevslide" href="#%s">previous</a>%s' \
44           "${tag%</slide>*}" "$prev" "${tag#*</slide>}"
45         tag=''
46         ;;
47       *\<*class=\"uncover\"*\>*)
48         printf '%s<span></span>' "$tag"
49         tag=''
50         ;;
51       *\<body*\>*)
52         printf '%s<a href="#" class="toplevel">overview</a>' "$tag"
53         tag=''
54         ;;
55       *\</body*\>*)
56         printf '<span class="count">%i</span>%s' "$idoff" "$tag"
57         tag=''
58         ;;
59       *\<*\>*)
60         printf %s "$tag"
61         tag=''
62         ;;
63       *) :
64         ;;
65     esac
66   done
67 }