123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813 |
- {
- FPDoc - Free Pascal Documentation Tool
- Copyright (C) 2007 by the FPC team.
- * RTF output generator
- See the file COPYING, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- }
- {$mode objfpc}
- {$H+}
- unit dw_LinRTF;
- {$WARN 5024 off : Parameter "$1" not used}
- interface
- uses DOM, dGlobals, PasTree;
- const
- RTFHighLight : Boolean = False;
- RTFExtension : String = '.rtf';
- Procedure CreateRTFDocForPackage(APackage: TPasPackage; AEngine: TFPDocEngine);
- implementation
- uses fpdocstrs, SysUtils, Classes, dwLinear, dwriter;
- const
- Indent = 300;
- Type
- TEnvironmenttype = (etEnumerate, etItemize, etDescription);
- TEnvironment = class
- private
- fenvtype : TEnvironmenttype;
- fdeltaIndent,
- fdeltaMargin,
- fnextitem : integer;
- fprevious : TEnvironment;
- public
- property envtype : TEnvironmenttype read fenvtype;
- property deltaIndent : integer read fdeltaIndent;
- property deltaMargin : integer read fdeltaMargin;
- property nextitem : integer read fnextitem;
- property previous : TEnvironment read fprevious;
- end;
-
- type
- { TRTFWriter }
- TRTFWriter = class(TLinearWriter)
- protected
- // used
- FLink: String;
- FEnvironmentStack : TEnvironment;
- FLeftMargin, FParIndent : integer;
- FEnumDepth : byte;
- FBorderString : string;
- FEmphLevel : integer;
- Cchapters, Csections, Csubsections, Csubsubsections : integer;
- // not yet used
- FTableCount : Integer;
- FInVerbatim : Boolean;
- Inlist,
- TableRowStartFlag,
- TableCaptionWritten: Boolean;
- // helper procedures
- procedure PushEnvironment (atype:TEnvironmenttype; dmargin,dindent:integer);
- procedure PopEnvironment;
- function GetEnumNumber(depth, item : integer) : string;
- procedure Header(text:string; font:integer);
- // Linear documentation methods overrides;
- procedure WriteBeginDocument; override;
- procedure WriteEndDocument; override;
- procedure WriteLabel(Const S : String); override;
- procedure WriteIndex(Const S : String); override;
- Procedure WriteExampleFile(FN : String); override;
- Procedure StartProcedure; override;
- Procedure EndProcedure; override;
- Procedure StartProperty; override;
- Procedure EndProperty; override;
- Procedure StartSynopsis; override;
- Procedure StartDeclaration; override;
- Procedure StartVisibility; override;
- Procedure StartDescription; override;
- Procedure StartAccess; override;
- Procedure StartErrors; override;
- Procedure StartSeealso; override;
- Procedure EndSeealso; override;
- procedure StartUnitOverview(AModuleName,AModuleLabel : String);override;
- procedure WriteUnitEntry(UnitRef : TPasType); override;
- Procedure EndUnitOverview; override;
- function GetLabel(AElement: TPasElement): String; override;
- procedure StartListing(Frames: Boolean; const name: String); override;
- procedure EndListing; override;
- Function EscapeText(S : String) : String; override;
- Function StripText(S : String) : String; override;
- procedure WriteCommentLine; override;
- procedure WriteComment(Comment : String);override;
- procedure StartSection(SectionName : String);override;
- procedure StartSubSection(SubSectionName : String);override;
- procedure StartSubSubSection(SubSubSectionName : String);override;
- procedure StartChapter(ChapterName : String); override;
- procedure StartOverview(Const What : String; WithAccess : Boolean); override;
- procedure WriteOverviewMember(const ALabel,AName,Access,ADescr : String); override;
- procedure WriteOverviewMember(const ALabel,AName,ADescr : String); override;
- procedure EndOverview; override;
- // Description node conversion
- procedure DescrBeginBold; override;
- procedure DescrEndBold; override;
- procedure DescrBeginItalic; override;
- procedure DescrEndItalic; override;
- procedure DescrBeginEmph; override;
- procedure DescrEndEmph; override;
- procedure DescrBeginUnderline; override;
- procedure DescrEndUnderline; override;
- procedure DescrWriteFileEl(const AText: DOMString); override;
- procedure DescrWriteKeywordEl(const AText: DOMString); override;
- procedure DescrWriteVarEl(const AText: DOMString); override;
- procedure DescrBeginLink(const AId: DOMString); override;
- procedure DescrEndLink; override;
- procedure DescrWriteLinebreak; override;
- procedure DescrBeginParagraph; override;
- procedure DescrBeginCode(HasBorder: Boolean; const AHighlighterName: String); override;
- procedure DescrWriteCodeLine(const ALine: String); override;
- procedure DescrEndCode; override;
- procedure DescrEndParagraph; override;
- procedure DescrBeginOrderedList; override;
- procedure DescrEndOrderedList; override;
- procedure DescrBeginUnorderedList; override;
- procedure DescrEndUnorderedList; override;
- procedure DescrBeginDefinitionList; override;
- procedure DescrEndDefinitionList; override;
- procedure DescrBeginListItem; override;
- procedure DescrEndListItem; override;
- procedure DescrBeginDefinitionTerm; override;
- procedure DescrEndDefinitionTerm; override;
- procedure DescrBeginDefinitionEntry; override;
- procedure DescrEndDefinitionEntry; override;
- procedure DescrBeginSectionTitle; override;
- procedure DescrBeginSectionBody; override;
- procedure DescrEndSection; override;
- procedure DescrBeginRemark; override;
- procedure DescrEndRemark; override;
- procedure DescrBeginTable(ColCount: Integer; HasBorder: Boolean); override;
- procedure DescrEndTable; override;
- procedure DescrBeginTableCaption; override;
- procedure DescrEndTableCaption; override;
- procedure DescrBeginTableHeadRow; override;
- procedure DescrEndTableHeadRow; override;
- procedure DescrBeginTableRow; override;
- procedure DescrEndTableRow; override;
- procedure DescrBeginTableCell; override;
- procedure DescrEndTableCell; override;
- // TFPDocWriter class methods
- public
- Function InterPretOption(Const Cmd,Arg : String) : boolean; override;
- Class Function FileNameExtension : String; override;
- end;
- function TRTFWriter.GetLabel(AElement: TPasElement): String;
- var
- i: Integer;
- begin
- if AElement.ClassType = TPasUnresolvedTypeRef then
- Result := Engine.ResolveLink(Module, AElement.Name)
- else
- begin
- Result := AElement.PathName;
- Result := LowerCase(Copy(Result, 2, Length(Result) - 1));
- end;
- for i := 1 to Length(Result) do
- if Result[i] = '.' then
- Result[i] := ':';
- end;
- function TRTFWriter.EscapeText(S: String): String;
- var
- i: Integer;
- begin
- if FInVerBatim=True then
- Result:=S
- else
- begin
- SetLength(Result, 0);
- for i := 1 to Length(S) do
- case S[i] of
- '\','{','}': // Escape these characters
- Result := Result + '\' + S[i];
- else
- Result := Result + S[i];
- end;
- end;
- end;
- function TRTFWriter.StripText(S: String): String;
- var
- I: Integer;
- begin
- Result:='';
- for i := 1 to Length(S) do
- If not (S[i] in ['{','}','\']) then
- Result := Result + S[i];
- end;
- procedure TRTFWriter.PushEnvironment(atype: TEnvironmenttype; dmargin,dindent:integer);
- var e : TEnvironment;
- begin
- e := TEnvironment.Create;
- with e do
- begin
- fenvtype := atype;
- fnextitem := 1;
- fdeltaIndent := dIndent;
- fdeltaMargin := dMargin;
- fprevious := FEnvironmentStack;
- end;
- if atype = etEnumerate then
- inc (FEnumDepth);
- inc (FParIndent, dindent);
- inc (FLeftMargin, dmargin);
- FEnvironmentStack := e;
- end;
- procedure TRTFWriter.PopEnvironment;
- var e : TEnvironment;
- begin
- e := FEnvironmentStack.previous;
- with FEnvironmentStack do
- begin
- if envtype = etEnumerate then
- dec (FEnumDepth);
- dec (FParIndent, deltaIndent);
- dec (FLeftMargin, deltaMargin);
- end;
- FEnvironmentStack.Free;
- FEnvironmentStack := e;
- end;
- function Romanized (nr : integer) : string;
- const
- st : array[0..9] of string = ('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC');
- se : array[0..9] of string = ('','I','II','III','IV','V','VI','VII','VIII','IX');
- var t,e : integer;
- begin
- t := (nr mod 100) div 10;
- e := nr mod 10;
- result := st[t] + se[e];
- end;
- function TRTFWriter.GetEnumNumber(depth, item: integer) : string;
- begin
- case depth of
- 1 : result := inttostr(item) + '.';
- 2 : result := '(' + char (ord('a')+item-1) + ')';
- 3 : result := Romanized(item);
- 4 : result := '(' + char (ord('A')+item-1) + ')';
- else result := '(' + inttostr(item) + ')';
- end;
- end;
- procedure TRTFWriter.WriteBeginDocument;
- begin
- write('{\rtf1');
- write('{\fonttbl');
- Write('{\f0\fswiss Helvetica{\*\falt Arial};}');
- write('{\f1\fmodern Courier{\*\falt Courier New};}');
- write('{\f2\froman Times{\*\falt Times New Roman};}');
- write('}{\stylesheet');
- write('{\s1\li0\fi0\ql\sb240\sa60\keepn\f2\b\fs32 Section Title;}');
- write('{\s2\ql\sb30\sa30\keepn\b0\i0\scaps1\f1\fs28 Table Title;}');
- write('{\s3\li0\fi0\qc\sb240\sa60\keepn\f2\b\scaps1\fs28 Listing Title;}');
- write('{\s4\li30\fi30\ql\f2\fs24 Listing Contents;}');
- write('{\s5\li0\fi0\ql\sb240\sa60\keepn\f2\b\fs40 Chapter;}');
- write('{\s6\li0\fi0\ql\sb240\sa60\keepn\f2\b\fs32 Section;}');
- write('{\s7\li0\fi0\ql\sb240\sa60\keepn\f2\b\fs28 Subsection;}');
- write('{\s8\li0\fi0\ql\sb240\sa60\keepn\f2\b\fs24 Subsubsection;}');
- write('{\s9\li30\fi10\ql\sb60\keepn\f2\fs24 Description titles;}');
- write('{\s10\li30\fi30\ql\fs24 Description;}');
- write('{\s11\li0\fi0\ql\fs24 Source Example;}');
- write ('}');
- FLeftMargin := 0;
- FParIndent := 0;
- FEnvironmentStack := nil;
- FEnumDepth := 0;
- Cchapters := 0;
- Csections := 0;
- Csubsections := 0;
- Csubsubsections := 0;
- end;
- procedure TRTFWriter.WriteEndDocument;
- begin
- write('}');
- end;
- procedure TRTFWriter.DescrBeginBold;
- begin
- Write('{\b ');
- end;
- procedure TRTFWriter.DescrEndBold;
- begin
- Write('}');
- end;
- procedure TRTFWriter.DescrBeginItalic;
- begin
- Write('{\i ');
- end;
- procedure TRTFWriter.DescrEndItalic;
- begin
- Write('}');
- end;
- procedure TRTFWriter.DescrBeginEmph;
- begin
- inc (FEmphLevel);
- if (FEmphLevel and 1) = 1 then
- Write('{\i ')
- else
- Write('{\i0 ');
- end;
- procedure TRTFWriter.DescrEndEmph;
- begin
- dec (FEmphLevel);
- Write('}')
- end;
- procedure TRTFWriter.DescrBeginUnderline;
- begin
- Write('{\ul ');
- end;
- procedure TRTFWriter.DescrEndUnderline;
- begin
- Write('}');
- end;
- procedure TRTFWriter.DescrWriteFileEl(const AText: DOMString);
- begin
- Write('{\f0 ');
- DescrWriteText(AText);
- Write('}');
- end;
- procedure TRTFWriter.DescrWriteKeywordEl(const AText: DOMString);
- begin
- Write('{\b\f1 ');
- DescrWriteText(AText);
- Write('}');
- end;
- procedure TRTFWriter.DescrWriteVarEl(const AText: DOMString);
- begin
- Write('{\f1 ');
- DescrWriteText(AText);
- Write('}');
- end;
- procedure TRTFWriter.DescrBeginLink(const AId: DOMString);
- begin
- FLink := Engine.ResolveLink(Module, Utf8Encode(AId));
- // System.WriteLn('Link "', AId, '" => ', FLink);
- end;
- procedure TRTFWriter.DescrEndLink;
- var s : string;
- begin
- s := StripText(Flink);
- WriteF('{\field{\*\fldinst{\lang1024 PAGEREF BM%s \\*MERGEFORMAT }}',[s]);
- WriteF('{\\fldrslt{%s}}}',[s]);
- end;
- procedure TRTFWriter.DescrWriteLinebreak;
- begin
- WriteLn('\line');
- end;
- procedure TRTFWriter.DescrBeginParagraph;
- begin
- // Do nothing
- end;
- procedure TRTFWriter.DescrEndParagraph;
- begin
- Write('\par ');
- end;
- procedure TRTFWriter.DescrBeginCode(HasBorder: Boolean;
- const AHighlighterName: String);
- begin
- StartListing(HasBorder,'');
- end;
- procedure TRTFWriter.DescrWriteCodeLine(const ALine: String);
- begin
- Write(ALine+'\line ');
- end;
- procedure TRTFWriter.DescrEndCode;
- begin
- EndListing;
- end;
- procedure TRTFWriter.DescrBeginOrderedList;
- begin
- PushEnvironment(etEnumerate, 2*Indent, -Indent);
- end;
- procedure TRTFWriter.DescrEndOrderedList;
- begin
- PopEnvironment;
- end;
- procedure TRTFWriter.DescrBeginUnorderedList;
- begin
- PushEnvironment(etItemize, 2*Indent, -Indent);
- end;
- procedure TRTFWriter.DescrEndUnorderedList;
- begin
- PopEnvironment;
- end;
- procedure TRTFWriter.DescrBeginDefinitionList;
- begin
- PushEnvironment(etDescription, Indent, -Indent);
- end;
- procedure TRTFWriter.DescrEndDefinitionList;
- begin
- PopEnvironment;
- end;
- procedure TRTFWriter.DescrBeginListItem;
- begin
- WriteF('{\pard\li%d\fi%d ',[FLeftMargin,FParIndent]);
- with FEnvironmentStack do
- if envtype = etItemize then
- write('\bullet\tab ')
- else
- begin
- WriteF('%s\tab ', [GetEnumNumber(fenumdepth,fnextitem)]);
- inc (fnextitem);
- end;
- end;
- procedure TRTFWriter.DescrEndListItem;
- begin
- WriteLn('}');
- end;
- procedure TRTFWriter.DescrBeginDefinitionTerm;
- begin
- WriteF('{\pard\li%d\fi%d{\b ',[FLeftMargin,FParIndent]);
- end;
- procedure TRTFWriter.DescrEndDefinitionTerm;
- begin
- Write('}');
- end;
- procedure TRTFWriter.DescrBeginDefinitionEntry;
- begin
- Write('\tab ');
- end;
- procedure TRTFWriter.DescrEndDefinitionEntry;
- begin
- WriteLn('}');
- end;
- procedure TRTFWriter.DescrBeginSectionTitle;
- begin
- write('{\pard\s1 ');
- end;
- procedure TRTFWriter.DescrBeginSectionBody;
- begin
- WriteLn('\par}');
- end;
- procedure TRTFWriter.DescrEndSection;
- begin
- write('\par ');
- end;
- procedure TRTFWriter.DescrBeginRemark;
- begin
- write ('\par ');
- write('{\b Remark:}\tab ');
- end;
- procedure TRTFWriter.DescrEndRemark;
- begin
- write ('\par ');
- end;
- procedure TRTFWriter.DescrBeginTable(ColCount: Integer; HasBorder: Boolean);
- begin
- Write('\par{');
- if HasBorder then
- FBorderString := '\trbrdrl\brdrs\brdrw1\trbrdrr\brdrs\brdrw1'
- else
- FBorderString := ''
- end;
- procedure TRTFWriter.DescrEndTable;
- begin
- Write('}');
- end;
- procedure TRTFWriter.DescrBeginTableCaption;
- begin
- Write('\pard\s2 ');
- end;
- procedure TRTFWriter.DescrEndTableCaption;
- begin
- write('\par ');
- end;
- procedure TRTFWriter.DescrBeginTableHeadRow;
- begin
- write('{\b\trowd'+FBorderstring+'\trbrdrh\brdrs\trbrdrv\brdrs ');
- end;
- procedure TRTFWriter.DescrEndTableHeadRow;
- begin
- Write('\row}');
- end;
- procedure TRTFWriter.DescrBeginTableRow;
- begin
- write('\trowd'+FBorderstring+'\trbrdrh\brdrs\trbrdrv\brdrs ');
- end;
- procedure TRTFWriter.DescrEndTableRow;
- begin
- Write('\row ');
- end;
- procedure TRTFWriter.DescrBeginTableCell;
- begin
- write('\pard\intbl ');
- end;
- procedure TRTFWriter.DescrEndTableCell;
- begin
- write('\cell');
- end;
- procedure TRTFWriter.WriteLabel(const S: String);
- var b: string;
- begin
- b := LowerCase(StripText(s));
- WriteF('{\bkmkstart %s}{\bkmkend %s}', [b,b]);
- end;
- procedure TRTFWriter.WriteIndex(const S: String);
- begin
- Write('{\xe{\v '+EscapeText(s)+'}}');
- end;
- procedure TRTFWriter.StartListing(Frames: Boolean; const name: String);
- begin
- Write('\par');
- if name <> '' then
- Write('{\pard\s3 '+name+'\par}');
- Write('{\pard\s4 ');
- end;
- procedure TRTFWriter.EndListing;
- begin
- Writeln('}')
- end;
- procedure TRTFWriter.WriteCommentLine;
- begin
- // doesn't exist
- end;
- procedure TRTFWriter.WriteComment(Comment : String);
- begin
- // doesn't exist
- end;
- procedure TRTFWriter.StartChapter(ChapterName : String);
- begin
- inc (Cchapters);
- if Cchapters > 1 then
- Write('\par\page');
- WriteF('{\pard\s5 %d %s\par}', [Cchapters,EscapeText(ChapterName)]);
- Csubsubsections := 0;
- Csubsections := 0;
- Csections := 0;
- end;
- procedure TRTFWriter.StartSection(SectionName : String);
- begin
- inc (Csections);
- if Csections > 1 then
- Write('\par');
- WriteF('{\pard\s6 %d.%d %s\par}', [Cchapters,Csections,EscapeText(SectionName)]);
- Csubsubsections := 0;
- Csubsections := 0;
- end;
- procedure TRTFWriter.StartSubSection(SubSectionName : String);
- begin
- inc (Csubsections);
- if Csubsections > 1 then
- Write('\par');
- WriteF('{\pard\s7 %d.%d.%d %s\par}', [Cchapters,Csections,Csubsections,EscapeText(SubSectionName)]);
- Csubsubsections := 0;
- end;
- procedure TRTFWriter.StartSubSubSection(SubSubSectionName : String);
- begin
- inc (Csubsubsections);
- if Csubsubsections > 1 then
- Write('\par');
- WriteF('{\pard\s8 %d.%d.%d.%d %s\par}', [Cchapters,Csections,Csubsections,Csubsubsections,
- EscapeText(SubSubSectionName)]);
- end;
- procedure TRTFWriter.StartProcedure;
- begin
- Write('{\pard');
- end;
- procedure TRTFWriter.StartProperty;
- begin
- Write('{\pard');
- end;
- procedure TRTFWriter.Header(text: string; font: integer);
- begin
- WriteF('\par\s9 %s\pard\par\s10\f%d ',[text, font]);
- end;
- procedure TRTFWriter.StartSynopsis;
- begin
- Header(SDocSynopsis,2);
- end;
- procedure TRTFWriter.StartDeclaration;
- begin
- Header(SDocDeclaration,1);
- end;
- procedure TRTFWriter.StartVisibility;
- begin
- Header(SDocVisibility,2);
- end;
- procedure TRTFWriter.StartDescription;
- begin
- Header(SDocDescription,2);
- end;
- procedure TRTFWriter.StartErrors;
- begin
- Header(SDocErrors,2);
- end;
- procedure TRTFWriter.StartAccess;
- begin
- Header(SDocAccess,2)
- end;
- procedure TRTFWriter.EndProcedure;
- begin
- Write('}');
- end;
- procedure TRTFWriter.EndProperty;
- begin
- Write('}');
- end;
- procedure TRTFWriter.WriteExampleFile(FN : String);
- var s : TStringlist;
- begin
- If (FN<>'') then
- begin
- Write('\pard{\s4 Listing:} '+FN);
- Write('\pard{\f1 ');
- s := TStringlist.Create;
- try
- s.loadfromfile (FN);
- Write(s.Text);
- finally
- s.Free;
- end;
- Write('}');
- end;
- end;
- procedure TRTFWriter.StartOverview(const What: String; WithAccess: Boolean);
- begin
- If WithAccess then
- WriteF('\par\trowd\pard\intbl %s\cell\pard\intbl %s\cell\pard\intbl %s \cell\pard\intbl %s \cell\row',
- [EscapeText(SDocPage), EscapeText(What), EscapeText(SDocAccess), EscapeText(SDocDescription)])
- else
- WriteF('\par\trowd\pard\intbl %s\cell\pard\intbl %s\cell\pard\intbl %s\cell\row',
- [EscapeText(SDocPage), EscapeText(What), EscapeText(SDocDescription)]);
- end;
- procedure TRTFWriter.WriteOverviewMember(const ALabel,AName,Access,ADescr : String);
- begin
- //TODO: Translate Latex \pageref to RTF
- //WriteLnF('\pageref{%s} & %s & %s & %s \\',[ALabel,AName,Access,ADescr]);
- WriteF('\par\trowd\pard\intbl %s\cell\pard\intbl %s\cell\pard\intbl %s \cell\pard\intbl %s \cell\row',
- [ALabel,AName,Access,ADescr]);
- end;
- procedure TRTFWriter.WriteOverviewMember(const ALabel,AName,ADescr : String);
- begin
- //TODO: Translate Latex \pageref to RTF
- //WriteLnF('\pageref{%s} & %s & %s \\',[ALabel,AName,ADescr]);
- WriteF('\par\trowd\pard\intbl %s\cell\pard\intbl %s\cell\pard\intbl %s\cell\row',
- [ALabel,AName,ADescr]);
- end;
- procedure TRTFWriter.EndOverview;
- begin
- Write ('\par');
- end;
- procedure TRTFWriter.StartSeealso;
- begin
- Header(SDocSeeAlso, 2);
- end;
- procedure TRTFWriter.EndSeealso;
- begin
- end;
- procedure TRTFWriter.StartUnitOverview(AModuleName,AModuleLabel : String);
- begin
- WriteF ('\pard\qc\s3 %s', [Format(SDocUsedUnitsByUnitXY, [AModuleName])]);
- Write ('\par\trowd\pard\intbl Name\cell\pard\intbl Page\cell\row');
- end;
- procedure TRTFWriter.WriteUnitEntry(UnitRef : TPasType);
- begin
- WriteF('\par\trowd\pard\intbl %s\cell\pard\intbl %s\cell\row',
- [UnitRef.Name, 'Pageref to '+StripText(GetLabel(UnitRef))]);
- //WriteLnF('%s\index{unit!%s} & \pageref{%s} \\',
- // [UnitRef.Name, UnitRef.Name, StripText(GetLabel(UnitRef))]);
- end;
- procedure TRTFWriter.EndUnitOverview;
- begin
- Write('\par');
- end;
- procedure CreateRTFDocForPackage(APackage: TPasPackage; AEngine: TFPDocEngine);
- var
- Writer: TRTFWriter;
- begin
- Writer := TRTFWriter.Create(APackage, AEngine);
- try
- Writer.DoWriteDocumentation;
- finally
- Writer.Free;
- end;
- end;
- function TRTFWriter.InterPretOption(const Cmd, Arg: String): boolean;
- begin
- if Cmd = '--RTF-extension' then
- begin
- RTFExtension:=Arg;
- Result := true;
- end
- else
- Result:=False;
- end;
- class function TRTFWriter.FileNameExtension: String;
- begin
- Result:=RTFExtension;
- end;
- initialization
- // Do not localize.
- RegisterWriter(TRTFWriter,'rtf','RTF output.');
- finalization
- UnRegisterWriter('rtf');
- end.
|