summaryrefslogtreecommitdiff
path: root/webgen
blob: cfbb914538c64324cf5b98eabb554ec1a6f43c48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/sh

# CONFIG:

OUT=`pwd`
TPLS=tpl/

HEADER=header
END=end
PAGE_SUFFIX='.html'
TEMPLATES="$1"
DEFAULT_MENU='-menu-none'

[ "$TEMPLATES" = '' ] && TEMPLATES="*"

if [ "$TEMPLATES" = '+' ]
then
 TEMPLATES_PAGE="*"
 TEMPLATES_DYN="NO-TEMPLATES"
elif [ "$TEMPLATES" = '~' ]
then
 TEMPLATES_PAGE="NO-TEMPLATES"
 TEMPLATES_DYN="*"
else
 TEMPLATES_PAGE="$TEMPLATES"
 TEMPLATES_DYN="$TEMPLATES"
fi

# CODE:
cd $TPLS

gen_faq()
{
 find FAQ/ -type d -not -wholename \*CVS\* | sed 's#^FAQ/##;'  | grep -v ^$   | sort > "$OF.FAQCATS"
 find FAQ/ -type f -not -wholename \*CVS\* -and -name \*.faq | sed 's#^FAQ/##; s#\.faq$##' | sort > "$OF.FAQINDEX"
 echo
 echo "<ul>"
 while read cat
 do
  echo " <li><b>$cat</b>"
  echo "  <ul>"
  grep "^$cat/" < "$OF.FAQINDEX" | \
  while IFS='/' read dummy q
  do
   e=`echo "$q" | sed 's/[^a-zA-Z0-9]/_/g'`
   echo "   <li><a href="\""#faq.gen.$e"\"">$q</a></li>"
  done
  echo "  </ul>"
  echo " </li>"
 done < "$OF.FAQCATS"
 echo "</ul>"

 [ -f ./-faq_eoh ] && cat "./-faq_eoh"

 while read cat
 do
  echo " <h2>$cat</h2>"
  echo
  grep "^$cat/" < "$OF.FAQINDEX" | \
  while IFS='/' read dummy q
  do
   e=`echo "$q" | sed 's/[^a-zA-Z0-9]/_/g'`
   echo " <h3><a name="\""faq.gen.$e"\"">$q</a></h3>"
   echo " <p>"
   sed 's#^$#</p><p>#' < "FAQ/$cat/$q.faq"
   echo " </p>"
  done
 done < "$OF.FAQCATS"

 echo
}

proc_page() {
 _tpl="$1"
 CLEANTPLNAME=$(echo "$_tpl" | sed 's/^[\-\+\~]//')
 OF="$OUT"/"$CLEANTPLNAME""$PAGE_SUFFIX"
 echo "Compiling $CLEANTPLNAME -> $OF"
 SECTIONS=`for _sec in $(grep --no-filename -- "^$_tpl[^a-zA-Z0-9-]" '#section-index'* | sed 's/^[^ \t]*[ \t]*[ \t]//'); do O=''; for i in $(tr . ' ' <<<"$_sec"); do O="$O.$i"; echo $O; done; done`' .ALL'
# echo "Sections: $SECTIONS"
 SECTIONS_REGEX=$(for _sec in $SECTIONS; do echo "s/(section==$_sec:\([^)]*\):)/\1/g;"; done; echo "s/(section==.*:.*:)//g")
 MENU=$(grep --no-filename -- "^$_tpl[^a-zA-Z0-9-]" '#menu-index'* | sed 's/^[^ \t]*[ \t]*[ \t]//');
 [ "$MENU" = '' ] && MENU="$DEFAULT_MENU"
 {
  cat -- -$HEADER
  cat -- "$MENU"
  cat -- -menu-mid
  cat --  $_tpl
  [ "$CLEANTPLNAME" = 'FAQ' ] && gen_faq
  cat -- -$END
 } | \
   sed "$SECTIONS_REGEX" | \
# sed 's#href="+\(.*\)"#href="\1'"$PAGE_SUFFIX"'"#g' > $OF
 perl -pe's#href="\+(.+?)"#href="$1'"$PAGE_SUFFIX"'"#g' > $OF
}

for i in +$TEMPLATES_PAGE \~$TEMPLATES_DYN
do
 [ -f "./$i" ] && proc_page "$i"
done

#ll