Check-in [e5509813e9]
Not logged in - Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:added index generate
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:e5509813e979759914f6dcfe980a4f9b81dddc4f
User & Date: Ratte 2010-08-01 14:38:53
Context
2010-08-01
14:39
added index generate check-in: 520e883980 user: Ratte tags: trunk
14:38
added index generate check-in: e5509813e9 user: Ratte tags: trunk
13:10
bugfix for branch table display and advanced footer script check-in: 950e4c8284 user: Ratte tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Added scripte/generate-index.bat.









>
>
>
>
1
2
3
4
@REM uncomment following line, if wiki-pages should always be read again
@REM del /q %TEMP%\lop.txt-
..\..\mordor-cloned\util\make.exe -f generate-index\Makefile.txt %1

Added scripte/generate-index/MakeConfig.txt.















































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
102
103
# #############################################################################
#
# Main target file
#
#INDEX_DIR:=..
#INDEX_PAGE:=index.wiki

#
# local server root
#
#SERVER_ROOT:=http://127.0.0.1:8000

#
# repository name
#
#REPOSITORY:=/mordor

#
# name of the repository database file, the above server is based on
# reading the pages depends on the timestamp off this file
#
# if empty, the default is ../..$(REPOSITORY).fossil
#REPOSITORY_FILE:=

#
# define checkout wiki pages to be indexed
#
#CHECKOUT_WIKI=scripte/generate-index/index-alias.wiki

#
# collect index entries with different case in one entry
#
#INDEX_NO_CASE:=1

#
# use separator lines in index for index entries beginning with one of these chars
#
#INDEX_USE_SEP=ABCDEFGHIJKLMNOPQRSTUVWXYZ

#
# define start/end of index/toc-wiki page
#
#PAGE_START=<title>Indexgenerierung</title><table border="1" frame=void rules="cols" width="100%%">
#PAGE_END=</table>
#PAGE_FOOTER=<sub>[http:scripte/generate-index/index-alias.wiki|%s]</sub>

#
# define layout of TOC
#
#TOC_START_LAYOUT=<tr><td valign="top">
#TOC_HEADER=<h1>Inhalt</h1>
#TOC_END_LAYOUT=</td>

#
# define layout of INDEX
#
#INDEX_START_LAYOUT=<td valign="top">
#INDEX_HEADER=<h1>Index</h1>
#INDEX_START_INNER_LAYOUT=<table border="0" width="100%%">
#INDEX_START_ENTRY=<tr><td valign="top">
#INDEX_MID_ENTRY=</td><td valign="top">
#INDEX_END_ENTRY=</td></tr>
#INDEX_RULER_BEGIN=<tr><td colspan="2"><br><center>
#INDEX_RULER_FORMAT=<a href="%s">&thinsp;%s&thinsp;</a>
#INDEX_RULER_CURRENT_FORMAT=<a href="%s"> <b>=&gt; %s &lt;=</b> </a>
#INDEX_RULER_UNUSED_FORMAT=<a> %s </a>
#INDEX_RULER_END=</center><br></td></tr>
#INDEX_END_INNER_LAYOUT=</table>
#INDEX_END_LAYOUT=</td></tr>
#INDEX_ALIAS_PAGE=Indexgenerierung / -aliase

#
# format for index entries
#
#INDEX_ENTRY_FORMAT=%s

#
# format for index links
#
#INDEX_LINK_FORMAT=%s

#
# format for page name in toc
#
#TOC_PAGE_FORMAT=<h2>%s</h2>

#
# format for header in toc
#
#TOC_HEADER_FORMAT=%s<br>

#
# text used for indenting headings
#
#TOC_LEAD_CHAR=&nbsp;&middot;

#
# text used for link to index alias page
#
#INDEX_ALIAS_PAGE=Indexgenerierung / -aliase

#
# #############################################################################

Added scripte/generate-index/Makefile.txt.























































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# !! DO NOT CHANGE BELOW !!
#
# change configuration in
#
#        generate-index\MakeConfig.txt
#
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

# #############################################################################
# define default values for exported configuration variables
INDEX_DIR:=..
INDEX_PAGE:=index.wiki
SERVER_ROOT:=http://127.0.0.1:8000
REPOSITORY:=/chisel-wst1
REPOSITORY_FILE:=
CHECKOUT_WIKI=scripte/generate-index/index-alias.wiki
INDEX_NO_CASE:=1
INDEX_USE_SEP=ABCDEFGHIJKLMNOPQRSTUVWXYZ
INDEX_ENTRY_FORMAT=%s
INDEX_LINK_FORMAT=%s
TOC_PAGE_FORMAT=<h2>%s</h2>
TOC_HEADER_FORMAT=%s<br>
TOC_LEAD_CHAR=&nbsp;&middot;
PAGE_START=<title>Indexgenerierung</title><table border="1" frame=void rules="cols" width="100%%">
PAGE_END=</table>
PAGE_FOOTER=<sub>[http:scripte/generate-index/index-alias.wiki|%s]</sub>
TOC_START_LAYOUT=<tr><td valign="top">
TOC_HEADER=<h1>Inhalt</h1>
TOC_END_LAYOUT=</td>
INDEX_START_LAYOUT=<td valign="top">
INDEX_HEADER=<h1>Index</h1>
INDEX_START_INNER_LAYOUT=<table border="0" width="100%%">
INDEX_START_ENTRY=<tr><td valign="top">
INDEX_MID_ENTRY=</td><td valign="top">
INDEX_END_ENTRY=</td></tr>
INDEX_RULER_BEGIN=<tr><td colspan="2"><br><center>
INDEX_RULER_FORMAT=<a href="%s"> %s </a>
INDEX_RULER_UNUSED_FORMAT=<a> %s </a>
INDEX_RULER_CURRENT_FORMAT=<a href="%s"> <b>=&gt; %s &lt;=</b> </a>
INDEX_RULER_END=</center><br></td></tr>
INDEX_END_INNER_LAYOUT=</table>
INDEX_END_LAYOUT=</td></tr>
INDEX_ALIAS_PAGE=Indexgenerierung / -aliase
#
# #############################################################################

# #############################################################################
# Main targt
INDEX_TARGET:=$(INDEX_DIR)/$(INDEX_PAGE)
.PHONY:	default
default:	$(INDEX_TARGET)
# #############################################################################

# #############################################################################
#
include generate-index\MakeConfig.txt
ifeq ($(REPOSITORY_FILE),)

REPOSITORY_FILE:=../..$(REPOSITORY).fossil

endif
#
# #############################################################################

# #############################################################################
# repository dependend names
TEMPFILEPREFIX:=$(subst /,,$(REPOSITORY))_
export TEMPFILEPREFIX
#
# #############################################################################

# #############################################################################
# how to call awk and other tools
TOOL_PATH:=..\\..\\mordor-cloned\\util\\
AWK:=$(TOOL_PATH)gawk.exe
WGET:=$(TOOL_PATH)wget.exe
# #############################################################################

# #############################################################################
# export configuration variables to the environment
MAKEFILE_EXPORT:=$(TEMP)/$(TEMPFILEPREFIX)Makefile_export.txt
$(MAKEFILE_EXPORT):	generate-index\MakeConfig.txt generate-index\Makefile.txt generate-index\get-export-awk.txt
	$(AWK) -f generate-index\get-export-awk.txt generate-index\MakeConfig.txt >$(MAKEFILE_EXPORT)
include $(MAKEFILE_EXPORT)
# #############################################################################

# #############################################################################
# generate list of pages, analysing reference and display name
LIST_OF_PAGES_WEB:=$(TEMP)/$(TEMPFILEPREFIX)lop.txt-
$(LIST_OF_PAGES_WEB):	$(REPOSITORY_FILE)
	$(WGET) -O - $(SERVER_ROOT)$(REPOSITORY)/wcontent >$@

LIST_OF_PAGES_TXT:=$(TEMP)/$(TEMPFILEPREFIX)lop.txt
$(LIST_OF_PAGES_TXT):	generate-index/Makefile.txt generate-index/MakeConfig.txt generate-index/get-pages-awk.txt $(LIST_OF_PAGES_WEB)
	$(AWK) -f generate-index\get-pages-awk.txt $(LIST_OF_PAGES_WEB) >$(LIST_OF_PAGES_TXT)
	$(foreach p,$(CHECKOUT_WIKI),echo /doc/ckout/$p	$(basename $(notdir $p)) >>$(LIST_OF_PAGES_TXT) & echo done)
# #############################################################################

# #############################################################################
# generate dependencies based on list of pages
MAKEFILE_AUTO:=$(TEMP)/$(TEMPFILEPREFIX)Makefile_auto.txt
$(MAKEFILE_AUTO):	$(LIST_OF_PAGES_TXT) generate-index/get-dependencies-awk.txt generate-index\MakeConfig.txt
	$(AWK) -v TEMPFILEPREFIX=$(TEMPFILEPREFIX) -f generate-index\get-dependencies-awk.txt $(LIST_OF_PAGES_TXT) >$(MAKEFILE_AUTO)

include $(MAKEFILE_AUTO)

$(PALL):	$(TEMP)/%_index.txt: $(TEMP)/%_web.txt generate-index/get-index-awk.txt generate-index/index-alias.wiki
	$(AWK) -f generate-index/get-index-awk.txt generate-index/index-alias.wiki $< >$@
# #############################################################################

# #############################################################################
# collect different indexes in one file
COLLECTED_INDEX:=$(TEMP)/$(TEMPFILEPREFIX)PALL_index.txt
$(COLLECTED_INDEX):	$(PALL) generate-index/collect-index-awk.txt
	$(AWK) -f generate-index\collect-index-awk.txt $(PALL) >$@
# #############################################################################

# #############################################################################
# generate the main target file
$(INDEX_TARGET):	$(COLLECTED_INDEX)
	copy $(TEMP)\$(TEMPFILEPREFIX)PALL_index.txt ..\index.wiki
# #############################################################################


# #############################################################################
# cleanup
.PHONY:	clean
clean:
	DEL /Q $(subst /,\\,$(PALL) "$(TEMP)\$(TEMPFILEPREFIX)P*_web.txt" $(TEMP)\$(TEMPFILEPREFIX)PALL_index.txt $(LIST_OF_PAGES_TXT) $(LIST_OF_PAGES_WEB) $(MAKEFILE_AUTO) $(MAKEFILE_EXPORT))

.PHONY:	clobber
clobber:	clean
	DEL /Q $(subst /,\\,"$(INDEX_TARGET)")
# #############################################################################

Added scripte/generate-index/collect-index-awk.txt.

















































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
function getSortString(t,ignCase) {
  # dos char
  gsub(//,"a",t)
  gsub(//,"A",t)
  gsub(//,"o",t)
  gsub(//,"O",t)
  gsub(//,"u",t)
  gsub(//,"U",t)

  # utf16 char
  gsub(/ä/,"a",t)
  gsub(/Ä/,"A",t)
  gsub(/ö/,"o",t)
  gsub(/Ö/,"O",t)
  gsub(/ü/,"u",t)
  gsub(/Ü/,"U",t)

  # html coding
  gsub(/&auml;/,"a",t)
  gsub(/&Auml;/,"A",t)
  gsub(/&ouml;/,"o",t)
  gsub(/&Ouml;/,"O",t)
  gsub(/&uuml;/,"u",t)
  gsub(/&Uuml;/,"U",t)
  if (ignCase) t=toupper(t)

  return (t)
}
function index_ruler(sep,cur) {
  printf(ENVIRON["INDEX_RULER_BEGIN"]"\n")
  if (cur=="") {
    print("<a name="DQ"ind_top"DQ"></a>")
    printf(ENVIRON["INDEX_RULER_CURRENT_FORMAT"]"\n","#ind_top","^")
  } else {
    printf(ENVIRON["INDEX_RULER_FORMAT"]"\n","#ind_top","^")
  }
  for (ir_i=1;ir_i<=length(sep);ir_i++) {
    if (substr(sep,ir_i,1)==cur) {
      print("<a name="DQ"ind_"cur DQ"></a>")
      printf(ENVIRON["INDEX_RULER_CURRENT_FORMAT"]"\n","#ind_"substr(sep,ir_i,1),substr(sep,ir_i,1))
    } else if (USED_SEP_CHARS[substr(sep,ir_i,1)]) {
      printf(ENVIRON["INDEX_RULER_FORMAT"]"\n","#ind_"substr(sep,ir_i,1),substr(sep,ir_i,1))
    } else {
      printf(ENVIRON["INDEX_RULER_UNUSED_FORMAT"]"\n",substr(sep,ir_i,1))
    }
  }
  if (cur=="EOP") {
    print("<a name="DQ"ind_eop"DQ"></a>")
    printf(ENVIRON["INDEX_RULER_CURRENT_FORMAT"]"\n","#ind_eop","$")
  } else {
    printf(ENVIRON["INDEX_RULER_FORMAT"]"\n","#ind_eop","$")
  }
  printf(ENVIRON["INDEX_RULER_END"]"\n")
}
BEGIN {
  RS="[\n\r]+"
  FS="	"
  DQ=sprintf("%c",34)
}
/^#/ {
  next
}
/^header/ {
  href=sprintf("&nbsp;<a href="DQ"%s"DQ">"ENVIRON["TOC_HEADER_FORMAT"]"</a>",$3,$2)
  for (i=1;i<=$5;i++) href=ENVIRON["TOC_LEAD_CHAR"]href
  hd="<a href="DQ $3 DQ">"$4"</a>"
  toc[hd]=toc[hd]"\n"href
}
/^headerOnly/ {
  next
}
{
  i=getSortString($2,ENVIRON["INDEX_NO_CASE"])
  d=$2
  href=sprintf("<a href="DQ $3 DQ">"ENVIRON["INDEX_LINK_FORMAT"]"</a>",$4)
  if (index(links[i],$3)==0) {
    links[i]=links[i] href "\n"
    if (dsp[i]=="") {
      dsp[i]=d
    } else if (index(dsp[i],d)==0) {
      dsp[i]=dsp[i]", "d
    }
    #links[i]=links[i] "<!-- "FILENAME" -->"
  }
}
END { 
  printf(ENVIRON["PAGE_START"]"\n")
   printf(ENVIRON["TOC_START_LAYOUT"]"\n")
    printf(ENVIRON["TOC_HEADER"]"\n")
    for (i in toc) {
      j=i
      gsub(/^[^>]*>/,"",j)
      gsub(/<.*$/,"",j)
      j=getSortString(j,1)
      iSortT[j]=j
      iSortTMap[j]=i
    }
    n = asort(iSortT)
    for (i = 1; i <= n; i++) {
      printf(ENVIRON["TOC_PAGE_FORMAT"]"%s\n",iSortTMap[iSortT[i]],toc[iSortTMap[iSortT[i]]])
    }
   printf(ENVIRON["TOC_END_LAYOUT"])
   printf(ENVIRON["INDEX_START_LAYOUT"]"\n")
    SEP_CHARS=ENVIRON["INDEX_USE_SEP"]
    CURRENT_SEP_CHAR=""
    printf(ENVIRON["INDEX_HEADER"]"\n")
    printf(ENVIRON["INDEX_START_INNER_LAYOUT"]"\n")
    for (i in links) {
      j=getSortString(i,1)
      iSort[j]=j
      iSortMap[j]=i
    }
    n = asort(iSort)
    if (SEP_CHARS) {
      for (i = 1; i <= n; i++) {
        USED_SEP_CHARS[substr(iSort[i],1,1)]=1
      }
    }
    index_ruler(ENVIRON["INDEX_USE_SEP"],"")
    for (i = 1; i <= n; i++) {
      if (SEP_CHARS) {
        start_current=substr(iSort[i],1,1)
	if (start_current!=CURRENT_SEP_CHAR && index(SEP_CHARS,start_current)) {
	  CURRENT_SEP_CHAR=start_current
	  gsub(start_current,"",SEP_CHARS)
          index_ruler(ENVIRON["INDEX_USE_SEP"],CURRENT_SEP_CHAR)
	}
      }
      printf(ENVIRON["INDEX_START_ENTRY"]ENVIRON["INDEX_ENTRY_FORMAT"]ENVIRON["INDEX_MID_ENTRY"]"\n%s"ENVIRON["INDEX_END_ENTRY"]"\n",dsp[iSortMap[iSort[i]]],links[iSortMap[iSort[i]]])
    }
    index_ruler(ENVIRON["INDEX_USE_SEP"],"EOP")
    printf(ENVIRON["INDEX_END_INNER_LAYOUT"]"\n")
   printf(ENVIRON["INDEX_END_LAYOUT"]"\n")
   printf(ENVIRON["PAGE_END"]"\n")
   printf(ENVIRON["PAGE_FOOTER"]"\n",ENVIRON["INDEX_ALIAS_PAGE"])
}

Added scripte/generate-index/get-dependencies-awk.txt.























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
BEGIN {
  RS="[\n\r]+"
  FS="	"
  DQ=sprintf("%c",34)
}
{
  n++
  pn=TEMPFILEPREFIX"P"n"_web.txt"
  pn2=TEMPFILEPREFIX"P"n"_index.txt"
  pages=pages "$(TEMP)/" pn2 " "
  printf("%sP%d_REF:=%s\n",TEMPFILEPREFIX,n,$1)
  printf("export %sP%d_REF\n",TEMPFILEPREFIX,n)
  printf("%sP%d_NAME:=%s\n",TEMPFILEPREFIX,n,$2)
  printf("export %sP%d_NAME\n",TEMPFILEPREFIX,n)
  if ($1~/^\/doc\/ckout/) {
    f=$1
    gsub(/^\/doc\/ckout/,"..",f)
  } else {
    f=""
  }
  printf("$(TEMP)/%s:	$(LIST_OF_PAGES_TXT) %s\n",pn,f)
  printf("	$(WGET) -O - $(SERVER_ROOT)$(REPOSITORY)%s >$@\n",$1)
  printf("\n")
}
END {
  printf("PALL:=%s\n",pages)
}

Added scripte/generate-index/get-export-awk.txt.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
BEGIN {
  FS=":?="
  RS="[\n\r]+"
}
/^#?[^ ]*:?=/ {
  v=$1
  gsub(/^#/,"",v)
  printf("export %s\n",v)
}

Added scripte/generate-index/get-index-awk.txt.

































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# ###############################################################
# Debug function for simple debug out of decoded info at top of
# index file
function debugLine() {
  printf ("#---------------------------------\n")
  printf ("# %.4d: %s\n",NR,$0)
}
function debugAlias(src,t,dest) {
  printf ("# src:   %s\n",src)
  printf ("# type:  %s\n",t)
  printf ("# dest:  %s\n",dest)
}
function debugLink() {
  printf ("# dsp:   %s\n",display[linkCount])
  printf ("# link:  %s\n",links[linkCount])
  printf ("# name:  %s\n",names[linkCount])
  printf ("# type:  %s\n",types[linkCount])
  printf ("# level: %s\n",level[linkCount])
}
function saveLinkInt(dsp,ref,name,type,lvl,po) {
  linkCount++
  display[linkCount]=dsp
  links[linkCount]=ref
  names[linkCount]=name
  types[linkCount]=type
  level[linkCount]=lvl
  posi[linkCount]=po
  debugLink()
}
function saveLink(dsp,ref,name,type,lvl,po) {
  recursionLevel++
  if (recursionLevel>100) {
    printf("##################################\nindex recursion loop:'%s'\n##################################\n",dsp)
    exit 1
  } else if (aliasType[dsp]=="-") {
    if (type=="header") {
      saveLinkInt(dsp,ref,name,type"Only",lvl,po)
    } else {
      printf("##################################\nskip index:'%s'\n##################################\n",dsp)
    }
  } else if (aliasType[dsp]=="E") {
    printf("##################################\ninvalid index:'%s'\n##################################\n",dsp)
    exit 1
  } else if (aliasType[dsp]=="R") {
    printf("# replace index '%s' with '%s'\n",dsp,aliasDest[dsp])
    saveLink(aliasDest[dsp],ref,name,type,lvl,po)
  } else if (aliasType[dsp]=="A") {
    printf("# add index '%s' for '%s'\n",aliasDest[dsp],dsp)
    saveLink(aliasDest[dsp],ref,name,type,lvl,po)
    saveLinkInt(dsp,ref,name,type,lvl,po)
  } else {
    saveLinkInt(dsp,ref,name,type,lvl,po)
  }
  recursionLevel--
}
# ###############################################################
BEGIN {
  RS="[\n\r]+"
  # save CR/LF
  CR=sprintf("%c",13)
  LF=sprintf("%c",10)
  # initialise outside wiki body
  insideWikiContent=0
}
# ###############################################################
# handle index aliases
FILENAME~/index-alias.wiki/ && $0~/^ *<tr><td>.*<\/td><td>[RAE\-][^<]*<\/td><td>.*<\/td><\/tr> *$/ {
  aliasSrc=$0
  gsub(/^ *<tr><td>/,"",aliasSrc)
  gsub(/<\/td><td>[RAE\-][^<]*<\/td><td>.*<\/td><\/tr> *$/,"",aliasSrc)
  aliasType[aliasSrc]=$0
  gsub(/^ *<tr><td>[^<]*<\/td><td>/,"",aliasType[aliasSrc])
  gsub(/<\/td><td>.*<\/td><\/tr> *$/,"",aliasType[aliasSrc])
  aliasType[aliasSrc]=substr(aliasType[aliasSrc],1,1)
  aliasDest[aliasSrc]=$0
  gsub(/^ *<tr><td>[^<]*<\/td><td>[RAE\-][^<]*<\/td><td>/,"",aliasDest[aliasSrc])
  gsub(/<\/td><\/tr> *$/,"",aliasDest[aliasSrc])
  debugLine()
  debugAlias(aliasSrc,aliasType[aliasSrc],aliasDest[aliasSrc])
}
FILENAME~/index-alias.wiki/ { next }
# ###############################################################
# get pref from environment
pref=="" || pname==""{
  pref=FILENAME
  gsub(/^.*\//,"",pref)
  gsub(/^.*\\/,"",pref)
  gsub(/_web.txt$/,"",pref)
  pref=ENVIRON[pref"_REF"]
  pname=FILENAME
  gsub(/^.*\//,"",pname)
  gsub(/^.*\\/,"",pname)
  gsub(/_web.txt$/,"",pname)
  pname=ENVIRON[pname"_NAME"]
}
# ###############################################################
# Save Page title after reading  aliases
linkCount==0 {
  debugLine()
  # save standard index
  saveLink(pname,pref,pname,"title",0,NR)
  # and save page name without replacements
  saveLinkInt(pname,pref,pname,"anker",0,NR)
}
# ###############################################################
# detect start/stop of wiki-content area and skip line, if outside wiki content
/<div class="content">/ {
  insideWikiContent=1
}
/<div class="bfooter">/ {
  insideWikiContent=0
}
# ###############################################################
# use empty, special named <a> tags to switch parsing on/off
/<a (name|id)="indexOn[01234567890]*">/ {
  if (insideWikiContent==1) exit 1
  insideWikiContent=1
  debugLine()
}
/<a (name|id)="indexOff[01234567890]*">/ {
  if (insideWikiContent==0) exit 1
  insideWikiContent=0
  debugLine()
}
insideWikiContent==0 { next }
# ###############################################################
# remove CR / LF from lines
{
  gsub(LF," ",$0)
  gsub(CR," ",$0)
}
# ###############################################################
# identified header
/<h[123456]>.*<\/h[123456]>/ {
  debugLine()
  lvl=$0
  gsub(/^<h/,"",lvl)
  gsub(/>.*$/,"",lvl)
  gsub(/^.*<h[123456]>/,"",$0)
  gsub(/<\/h[123456].*>$/,"",$0)
  saveLink($0,pref,pname,"header",lvl,NR)
}
# ###############################################################
# identified <a>
{ # loop from left to right
  while (/<a[^<>]*>[^<]*<\/a>/) {
    i=index($0,"<a")
    $0=substr($0,i)
    if (/^<a[^<>]*>[^<]*<\/a>/) {
      debugLine()
      gsub(/^<a[^<>]*>/,"",$0)
      dsp=$0
      gsub(/<\/a *>.*$/,"",dsp)
      if (dsp!="") {
        saveLink(dsp,pref,pname,"anker",0,NR)
        gsub(/^[^<]<\/a *>/,"",$0)
      }
    } else {
      $0=substr($0,2)
    }
  }
}
# ###############################################################
END {
  for (i=1;i<=linkCount;i++) {
    l=display[i]
    # remove anker    
    gsub(/<a[^>]*>/,"",l)
    gsub(/<\/a *>/,"",l)
    # make link relativ
    gsub("^"ENVIRON["SERVER_ROOT"],"",links[i])
    gsub("^"ENVIRON["REPOSITORY"],"",links[i])
    # print link with repository
    printf("%s	%s	%s%s	%s	%s %d\n",types[i],l,ENVIRON["REPOSITORY"],links[i],names[i],level[i],posi[i])
  }
}

Added scripte/generate-index/get-pages-awk.txt.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
/^<li>.*<\/li>$/ {
  gsub(/<li>/,"",$0)
  gsub(/<\/li>/,"",$0)
  gsub(/<\/a>/,"",$0)
  gsub(/^<a +href="/,"",$0)
  gsub(/">/,"	",$0)
  # print link absolute
  printf("%s\n",$0)
}

Added scripte/generate-index/index-alias.wiki.



































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
<title>Indexgenerierung</title>
<h1>Indexgenerierung</h1>
Der [http:../../index.wiki|Index] wird mittels Scripten aus den durch
[Fossil] gerenderten Seiten erzeugt
([http:../../../../finfo?name=scripte/generate-index.bat|generate-index.bat],
Hilfsscripte in [http:../../../../dir?name=scripte/generate-index|generate-index]
und Tools in [http:../../../../dir?name=util|util]).
Basis sind dabei
  *  <a>Seitennamen</a>
  *  <a>&Uuml;berschriften</a>
  *  <a>Anker</a>-Tags - sowohl manuell eingef&uuml;gte &lt;a&gt;..&lt;/a&gt;, als auch Wiki-Links
     (&#0091;..&#0093;) tauchen im Index mit dem Anzeigetext auf.

<h2>indexOff / indexOn</h2>
Mit
<kbd>&lt;a&nbsp;name="<a>indexOff</a>&gt;&lt;/a&gt;&nbsp;..&nbsp;&lt;a&nbsp;name="<a>indexOn</a>&gt;&lt;/a&gt;</kbd>
kann f&uuml;r bestimmte Bereiche die Indizierung deaktiviert werden. F&uuml;r
<a>XHTML</a>-Kompatibilit&auml;t kann anstelle des Attributes <code>name</code>
auch das Attribut <code>id</code> verwendet und der Attributwert mit Ziffern
eindeutig gemacht werden.

<h1>Synonyme</h1>
<h2>Formatbeschreibung</h2>
Die nachfolgende Tabelle enth&auml;lt Synonyme f&uuml;r Indexbegriffe.
Der in Spalte 1 genannte Begriff wird in Abh&auml;ngigkeit vom 1 Zeichen der 2. Spalte
  *  <a>R</a> (wie <a>Replace</a>): im Index durch den Begriff in der 3. Spalte ersetzt
  *  <a>A</a> (wie <a>Add</a>): im Index zus&auml;tzlich unter dem Begriff in der 3. Spalte abgelegt
  *  <a>-</a>: die Indizierung f&uuml;r diesen Begriff unterdr&uuml;ckt
  *  <a>E</a> (wie <a>Error</a>): die Generierung des Index abgebrochen, da dieser Begriff nicht als Indexbegriff verwendet werden darf

<h2>Indexaliase</h2>
<center>
<table border="1">
<tr><th>Indexbegriff</th><th>Aktion</th><th>Synonym</th></tr>
<tr><td>&nbsp;(*)&nbsp;</td><td>- - interne Crossreferenz</td><td></td></tr>
<tr><td>Addin</td><td>E - nicht gew&uuml;nschte Schreibweise</td><td></td></tr>
<tr><td>addin</td><td>E</td><td></td></tr>
<tr><td>Altiris Software-Virtualisierung</td><td>A</td><td>Software-Virtualisierung</td></tr>
<tr><td>gemounted</td><td>R</td><td>mount</td></tr>
<tr><td>indexOff / indexOn</td><td>-</td><td></td></tr>
<tr><td>Remote</td><td>R</td><td>remote</td></tr>
<tr><td>Repositories</td><td>R</td><td>Repository</td></tr>
<tr><td>RewriteRules</td><td>R</td><td>RewriteRule</td></tr>
<tr><td>spontane Amtsholung</td><td>A</td><td>Amtsholung</td></tr>
<tr><td>Symantec Software-Virtualisierung</td><td>A</td><td>Software-Virtualisierung</td></tr>
<tr><td>WNWBOX</td><td>R</td><td>Web'n'Walk-Box IV</td></tr>
<tr><td>Web'n'walk Box IV</td><td>R</td><td>Web'n'Walk-Box IV</td></tr>
<tr><td>web'n'walk Box IV</td><td>R</td><td>Web'n'Walk-Box IV</td></tr>
<tr><td>whs</td><td>E</td><td></td></tr>
<tr><td>Whs</td><td>E</td><td></td></tr>
<tr><td>WHS-Add-In</td><td>A - zus&auml;tzlich ohne WHS-Vorsilbe</td><td>AddIn</td></tr>
<tr><td>WHS-Add-Ins</td><td>R - nicht gew&uuml;nschte Schreibweise im Index</td><td>WHS-Add-In</td></tr>
<tr><td>WHS-Konfiguration</td><td>A - zus&auml;tzlich ohne WHS-Vorsilbe</td><td>Konfiguration</td></tr>
<tr><td>Wikis</td><td>R</td><td>Wiki</td></tr>
</table>
</center>

<h3>Hinweis</h3>
Diese Konfiguration wird automatisch verarbeitet, daher ist die im Quelltext verwendete Struktur zu verwenden:<br>
<code>&lt;tr&gt;&lt;td&gt;</code><var>Indexbegriff</var><code>&lt;/td&gt;&lt;td&gt;</code><var>Aktion</var><code>&lt;/td&gt;&lt;td&gt;</code><var>Ersatzbegriff</var><code>&lt;/td&gt;&lt;/tr&gt;</code><br>
Eine aus HTML-Sicht analoge Formulerung obiger Tabelle (Zeilenwechsel, Formatierungen, ..) ist nicht erlaubt.
Gross-/Kleinschreibung wird ber&uuml;cksichtigt!
Es ist erlaubt, in der Typ-Spalte 2 nachdem Typkennzeichen(A,E,R,-) einen Kommentar anzugeben.

<a name="indexOff"></a>

running remote / local version of
@http://mordor:8000 powered by Fossil version [9aa9ba8bd2] 2018-09-22 17:40:11