Skip to content

Commit 681d8ff

Browse files
GAPgap
authored andcommitted
Removed a hack in GAPDoc's init.g.
Corrected functionality of `?<<' in handler. Sorry, forgot to commit these changes on Saturday - please update if you get an error message about 'HELP_BOOKS'. git-svn-id: path/gapdoc/trunk@17
1 parent 3951045 commit 681d8ff

File tree

2 files changed

+66
-28
lines changed

2 files changed

+66
-28
lines changed

init.g

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
##
33
#A init.g GAPDoc Frank Lübeck / Max Neunhöffer
44
##
5-
#H @(#)$Id: init.g,v 1.1.1.1 2001-01-05 13:37:46 gap Exp $
5+
#H @(#)$Id: init.g,v 1.2 2001-06-11 08:04:27 gap Exp $
66
##
77
#Y Copyright (C) 2000, Frank Lübeck and Max Neunhöffer,
88
#Y Lehrstuhl D für Mathematik, RWTH Aachen
99
##
1010

1111
DeclareAutoPackage("gapdoc", "0.9", ReturnTrue);
12-
DeclarePackageAutoDocumentation("gapdoc", "doc");
13-
DeclarePackageAutoDocumentation("gapdoc", "example");
14-
if "pkg/gapdoc/example" in HELP_BOOKS then
15-
HELP_BOOKS[Length(HELP_BOOKS)-2] := "gapdocexample";
16-
fi;
12+
DeclarePackageAutoDocumentation("GAPDoc", "doc", "GAPDoc",
13+
"Package for Preparing GAP Documentation");
14+
DeclarePackageAutoDocumentation("GAPDoc", "example", "GAPDoc Example",
15+
"Extensive Example for GAPDoc");
16+
1717
#DeclarePackage("gapdoc", "0.9", ReturnTrue);
1818
#DeclarePackageDocumentation("gapdoc", "doc");
1919

lib/HelpBookHandler.g

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
##
33
#W HelpBookHandler.g GAPDoc Frank Lübeck
44
##
5-
#H @(#)$Id: HelpBookHandler.g,v 1.4 2001-06-07 20:30:34 gap Exp $
5+
#H @(#)$Id: HelpBookHandler.g,v 1.5 2001-06-11 08:04:28 gap Exp $
66
##
77
#Y Copyright (C) 2000, Frank Lübeck, Lehrstuhl D für Mathematik,
88
#Y RWTH Aachen
@@ -46,7 +46,7 @@ HELP_BOOK_HANDLER.GapDocGAP.ReadSix := function(stream)
4646

4747
# in position 6 of each entry we put the corresponding search string
4848
for a in res.entries do
49-
a[6] := STRING_LOWER(StripEscapeSequences(a[1]));
49+
a[6] := SIMPLE_STRING(StripEscapeSequences(a[1]));
5050
NormalizeWhitespace(a[6]);
5151
od;
5252

@@ -126,12 +126,17 @@ HELP_BOOK_HANDLER.GapDocGAP.HelpData := function(book, entrynr, type)
126126
return a;
127127
fi;
128128

129+
a := info.entries[entrynr];
130+
131+
# section number info
132+
if type = "secnr" then
133+
return a{[3,2]};
134+
fi;
135+
129136
if not type in info.types then
130137
return fail;
131138
fi;
132139

133-
a := info.entries[entrynr];
134-
135140
if type = "text" then
136141
str := StringFile(Filename(info.directory, Concatenation("chap",
137142
String(a[3][1]), ".txt")));
@@ -162,20 +167,35 @@ HELP_BOOK_HANDLER.GapDocGAP.HelpData := function(book, entrynr, type)
162167
return rec(file := info.pdffile, page := a[5]);
163168
fi;
164169

165-
if type = "secnr" then
166-
return a{[3,2]};
167-
fi;
168-
169170
return fail;
170171
end;
171172

173+
## cache list of chapter numbers, but only if we need them
174+
HELP_BOOK_HANDLER.GapDocGAP.ChapNumbers := function(info)
175+
local l, sp;
176+
if not IsBound(info.ChapNumbers) then
177+
l := Set(List(info.entries,a->a[3][1]));
178+
sp := IntersectionSet(l, ["Bib", "Ind"]);
179+
l := Difference(l, sp);
180+
Append(l, sp);
181+
info.ChapNumbers := l;
182+
fi;
183+
end;
184+
172185
## for ?<<, ?>>, ?< and ?>
173-
HELP_BOOK_HANDLER.GapDocGAP.MatchBeginChap := function(book, entrynr)
174-
local info, ent, cnr, nr;
186+
HELP_BOOK_HANDLER.GapDocGAP.MatchPrevChap := function(book, entrynr)
187+
local info, chnums, ent, cnr, new, nr;
175188
info := HELP_BOOK_INFO(book);
189+
HELP_BOOK_HANDLER.GapDocGAP.ChapNumbers(info);
190+
chnums := info.ChapNumbers;
176191
ent := info.entries;
177-
cnr := [ent[entrynr][3], 0, 0];
178-
nr := First([1..Length(ent)], i-> ent[i][3]=cnr);
192+
cnr := ent[entrynr][3];
193+
if cnr[2] <> 0 or cnr[3] <> 0 or cnr[1] = chnums[1] then
194+
new := [cnr[1], 0, 0];
195+
else
196+
new := [chnums[Position(chnums, cnr[1])-1], 0, 0];
197+
fi;
198+
nr := First([1..Length(ent)], i-> ent[i][3] = new);
179199
if nr = fail then
180200
# return current
181201
nr := entrynr;
@@ -184,20 +204,38 @@ HELP_BOOK_HANDLER.GapDocGAP.MatchBeginChap := function(book, entrynr)
184204
end;
185205

186206
HELP_BOOK_HANDLER.GapDocGAP.MatchNextChap := function(book, entrynr)
187-
local info, ent, old, chnrs, pos, cnr, nr;
207+
## local info, ent, old, chnrs, pos, cnr, nr;
208+
## info := HELP_BOOK_INFO(book);
209+
## HELP_BOOK_HANDLER.GapDocGAP.ChapNumbers(info);
210+
## ent := info.entries;
211+
## old := ent[entrynr][3];
212+
## # this handles appendices as chapters
213+
## chnrs := Set(Difference(List(ent, a-> a[1]), ["Bib", "Ind"]));
214+
## pos := Position(chnrs, old[1]);
215+
## if pos < Length(chnrs) then
216+
## cnr := [chnrs[pos+1], 0, 0];
217+
## else
218+
## # no next chapter, return the last
219+
## cnr := [old[1], 0, 0];
220+
## fi;
221+
## nr := First([1..Length(ent)], i-> ent[i][3]=cnr);
222+
## if nr = fail then
223+
## # return current
224+
## nr := entrynr;
225+
## fi;
226+
## return [info, nr];
227+
local info, chnums, ent, cnr, new, nr;
188228
info := HELP_BOOK_INFO(book);
229+
HELP_BOOK_HANDLER.GapDocGAP.ChapNumbers(info);
230+
chnums := info.ChapNumbers;
189231
ent := info.entries;
190-
old := ent[entrynr][3];
191-
# this handles appendices as chapters
192-
chnrs := Set(Difference(List(ent, a-> a[1]), ["Bib", "Ind"]));
193-
pos := Position(chnrs, old[1]);
194-
if pos < Length(chnrs) then
195-
cnr := [chnrs[pos+1], 0, 0];
232+
cnr := ent[entrynr][3];
233+
if cnr[1] = chnums[Length(chnums)] then
234+
new := [cnr[1], 0, 0];
196235
else
197-
# no next chapter, return the last
198-
cnr := [old[1], 0, 0];
236+
new := [chnums[Position(chnums, cnr[1])+1], 0, 0];
199237
fi;
200-
nr := First([1..Length(ent)], i-> ent[i][3]=cnr);
238+
nr := First([1..Length(ent)], i-> ent[i][3] = new);
201239
if nr = fail then
202240
# return current
203241
nr := entrynr;

0 commit comments

Comments
 (0)