* Correct documenting of advanced records

git-svn-id: trunk@31184 -
This commit is contained in:
michael 2015-07-01 19:44:47 +00:00
parent a5715c078b
commit 8cb651c0a5
13 changed files with 776 additions and 563 deletions

View File

@ -1,9 +1,9 @@
Const
DefaultCSS : Array[0..2242] of byte = (
DefaultCSS : Array[0..2254] of byte = (
47, 42, 10, 32, 32, 36, 73,100, 58, 32,102,112,100,111, 99, 46, 99,
115,116, 44,118, 32, 49, 46, 49, 32, 50, 48, 48, 53, 47, 48, 49, 47,
48, 50, 32, 49, 54, 58, 50, 50, 58, 49, 54, 32,109,105, 99,104, 97,
115,115, 44,118, 32, 49, 46, 49, 32, 50, 48, 48, 51, 47, 48, 51, 47,
49, 55, 32, 50, 51, 58, 48, 51, 58, 50, 48, 32,109,105, 99,104, 97,
101,108, 32, 69,120,112, 32, 36, 10, 10, 32, 32, 68,101,102, 97,117,
108,116, 32,115,116,121,108,101, 32,115,104,101,101,116, 32,102,111,
114, 32, 70, 80, 68,111, 99, 32,114,101,102,101,114,101,110, 99,101,
@ -53,83 +53,84 @@ Const
32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,
110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,115,121,109, 32,123,
10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,114,101,100,
10,125, 10, 47, 42, 32, 78,111, 32,119,111,114,100,119,114, 97,112,
32,105,110, 32, 99,111,100,101, 32,102,114, 97,103,109,101,110,116,
115, 32, 42, 47, 10,115,112, 97,110, 46, 99,111,100,101, 32,123, 10,
32, 32, 32,119,104,105,116,101, 45,115,112, 97, 99,101, 58, 32,110,
111,119,114, 97,112, 10,125, 10, 10, 47, 42, 32,107,101,121,119,111,
114,100,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,107,119,
32,123, 10, 32, 32,102,111,110,116, 45,119,101,105,103,104,116, 58,
32, 98,111,108,100, 10,125, 10, 10, 47, 42, 32, 99,111,109,109,101,
110,116,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46, 99,109,
116, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,
99,121, 97,110, 59, 10, 32, 32,102,111,110,116, 45,115,116,121,108,
101, 58, 32,105,116, 97,108,105, 99, 10,125, 10, 10, 47, 42, 32,100,
105,114,101, 99,116,105,118,101,115, 32,105,110, 32,115,111,117,114,
10,125, 10, 10, 47, 42, 32,107,101,121,119,111,114,100,115, 32,105,
110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,
115, 32, 42, 47, 10,115,112, 97,110, 46,107,119, 32,123, 10, 32, 32,
102,111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100,
10,125, 10, 10, 47, 42, 32, 99,111,109,109,101,110,116,115, 32,105,
110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,
115, 32, 42, 47, 10,115,112, 97,110, 46, 99,109,116, 32,123, 10, 32,
32, 99,111,108,111,114, 58, 32,100, 97,114,107, 99,121, 97,110, 59,
10, 32, 32,102,111,110,116, 45,115,116,121,108,101, 58, 32,105,116,
97,108,105, 99, 10,125, 10, 10, 47, 42, 32,100,105,114,101, 99,116,
105,118,101,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114,
97,103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,100,
105,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,
107,121,101,108,108,111,119, 59, 10, 32, 32,102,111,110,116, 45,115,
116,121,108,101, 58, 32,105,116, 97,108,105, 99, 10,125, 10, 10, 47,
42, 32,110,117,109, 98,101,114,115, 32,105,110, 32,115,111,117,114,
99,101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,
112, 97,110, 46,100,105,114, 32,123, 10, 32, 32, 99,111,108,111,114,
58, 32,100, 97,114,107,121,101,108,108,111,119, 59, 10, 32, 32,102,
111,110,116, 45,115,116,121,108,101, 58, 32,105,116, 97,108,105, 99,
10,125, 10, 10, 47, 42, 32,110,117,109, 98,101,114,115, 32,105,110,
32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,115,
32, 42, 47, 10,115,112, 97,110, 46,110,117,109, 32,123, 10, 32, 32,
99,111,108,111,114, 58, 32,100, 97,114,107,109, 97,103,101,110,116,
97, 10,125, 10, 10, 47, 42, 32, 99,104, 97,114, 97, 99,116,101,114,
115, 32, 40, 35, 46, 46, 46, 41, 32,105,110, 32,115,111,117,114, 99,
101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,112,
97,110, 46, 99,104,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58,
32,100, 97,114,107, 99,121, 97,110, 10,125, 10, 10, 47, 42, 32,115,
116,114,105,110,103,115, 32,105,110, 32,115,111,117,114, 99,101, 32,
112, 97,110, 46,110,117,109, 32,123, 10, 32, 32, 99,111,108,111,114,
58, 32,100, 97,114,107,109, 97,103,101,110,116, 97, 10,125, 10, 10,
47, 42, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32, 40, 35, 46,
46, 46, 41, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46, 99,104,
114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,
99,121, 97,110, 10,125, 10, 10, 47, 42, 32,115,116,114,105,110,103,
115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,
101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,115,116,114, 32,
123, 10, 32, 32, 99,111,108,111,114, 58, 32, 98,108,117,101, 10,125,
10, 10, 47, 42, 32, 97,115,115,101,109, 98,108,101,114, 32,112, 97,
115,115, 97,103,101,115, 32,105,110, 32,115,111,117,114, 99,101, 32,
102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110,
46,115,116,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32, 98,
108,117,101, 10,125, 10, 10, 47, 42, 32, 97,115,115,101,109, 98,108,
101,114, 32,112, 97,115,115, 97,103,101,115, 32,105,110, 32,115,111,
117,114, 99,101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47,
10,115,112, 97,110, 46, 97,115,109, 32,123, 10, 32, 32, 99,111,108,
111,114, 58, 32,103,114,101,101,110, 10,125, 10, 10, 10,116,100, 46,
112,114,101, 32,123, 10, 32, 32,119,104,105,116,101, 45,115,112, 97,
99,101, 58, 32,112,114,101, 10,125, 10, 10,112, 46, 99,109,116, 32,
123, 10, 32, 32, 99,111,108,111,114, 58, 32,103,114, 97,121, 10,125,
10, 10,115,112, 97,110, 46,119, 97,114,110,105,110,103, 32,123, 10,
32, 32, 99,111,108,111,114, 58, 32,114,101,100, 59, 10, 32, 32,102,
111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100, 10,
125, 10, 10, 47, 42, 32, 33, 33, 33, 58, 32, 72,111,119, 32,115,104,
111,117,108,100, 32,119,101, 32,100,101,102,105,110,101, 32,116,104,
105,115, 46, 46, 46, 63, 32, 42, 47, 10,115,112, 97,110, 46,102,105,
108,101, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,
107,103,114,101,101,110, 10,125, 10, 10,116, 97, 98,108,101, 46,114,
101,109, 97,114,107, 32,123, 10, 32, 32, 98, 97, 99,107,103,114,111,
117,110,100, 45, 99,111,108,111,114, 58, 32, 35,102,102,102,102, 99,
48, 59, 10,125, 10, 10,116, 97, 98,108,101, 46, 98, 97,114, 32,123,
10, 32, 32, 98, 97, 99,107,103,114,111,117,110,100, 45, 99,111,108,
111,114, 58, 32, 35, 97, 48, 99, 48,102,102, 59, 10,125, 10, 10,116,
100, 32,112, 32,123, 10, 32,109, 97,114,103,105,110, 58, 32, 48, 59,
10,125, 10, 10,115,112, 97,110, 46, 98, 97,114,116,105,116,108,101,
32,123, 10, 32, 32,102,111,110,116, 45,119,101,105,103,104,116, 58,
32, 98,111,108,100, 59, 10, 32, 32,102,111,110,116, 45,115,116,121,
108,101, 58, 32,105,116, 97,108,105, 99, 59, 10, 32, 32, 99,111,108,
111,114, 58, 32,100, 97,114,107, 98,108,117,101, 10,125, 10, 10,115,
112, 97,110, 46,116,111,103,103,108,101,116,114,101,101, 99,108,111,
115,101, 32,123, 10, 32, 32, 32, 32, 98, 97, 99,107,103,114,111,117,
110,100, 58, 32,117,114,108, 40,109,105,110,117,115, 46,112,110,103,
41, 32, 99,101,110,116,101,114, 32,108,101,102,116, 32,110,111, 45,
114,101,112,101, 97,116, 59, 10, 32, 32, 32, 32,112, 97,100,100,105,
110,103, 45,108,101,102,116, 58, 32, 50, 48,112,120, 59, 32, 10,125,
10, 10,115,112, 97,110, 46,116,111,103,103,108,101,116,114,101,101,
111,112,101,110, 32,123, 10, 32, 32, 32, 32, 98, 97, 99,107,103,114,
111,117,110,100, 58, 32,117,114,108, 40,112,108,117,115, 46,112,110,
103, 41, 32, 99,101,110,116,101,114, 32,108,101,102,116, 32,110,111,
45,114,101,112,101, 97,116, 59, 10, 32, 32, 32, 32,112, 97,100,100,
105,110,103, 45,108,101,102,116, 58, 32, 50, 48,112,120, 59, 32, 10,
125, 10, 10,117,108, 46, 99,108, 97,115,115,116,114,101,101,108,105,
115,116, 32,108,105, 32,123, 32,112, 97,100,100,105,110,103, 45,108,
101,102,116, 58, 32, 48,112,120, 59, 32,125, 10, 10,117,108, 46, 99,
108, 97,115,115,116,114,101,101,108,105,115,116, 32,123, 32,108,105,
115,116, 45,115,116,121,108,101, 45,116,121,112,101, 58,110,111,110,
101, 59, 32,125, 10, 10,108,105, 46, 99,108, 97,115,115,116,114,101,
101, 32,117,108, 32,123, 32,100,105,115,112,108, 97,121, 58, 32, 98,
108,111, 99,107, 59, 32,125, 10, 10,108,105, 46, 99,108, 97,115,115,
116,114,101,101, 99,108,111,115,101,100, 32,117,108, 32,123, 32,100,
105,115,112,108, 97,121, 58, 32,110,111,110,101, 59, 32,125, 10);
46, 97,115,109, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,103,
114,101,101,110, 10,125, 10, 10, 10,116,100, 46,112,114,101, 32,123,
10, 32, 32,119,104,105,116,101, 45,115,112, 97, 99,101, 58, 32,112,
114,101, 10,125, 10, 10,112, 46, 99,109,116, 32,123, 10, 32, 32, 99,
111,108,111,114, 58, 32,103,114, 97,121, 10,125, 10, 10,115,112, 97,
110, 46,119, 97,114,110,105,110,103, 32,123, 10, 32, 32, 99,111,108,
111,114, 58, 32,114,101,100, 59, 10, 32, 32,102,111,110,116, 45,119,
101,105,103,104,116, 58, 32, 98,111,108,100, 10,125, 10, 10, 47, 42,
32, 33, 33, 33, 58, 32, 72,111,119, 32,115,104,111,117,108,100, 32,
119,101, 32,100,101,102,105,110,101, 32,116,104,105,115, 46, 46, 46,
63, 32, 42, 47, 10,115,112, 97,110, 46,102,105,108,101, 32,123, 10,
32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,103,114,101,101,
110, 10,125, 10, 10,116, 97, 98,108,101, 46,114,101,109, 97,114,107,
32,123, 10, 32, 32, 98, 97, 99,107,103,114,111,117,110,100, 45, 99,
111,108,111,114, 58, 32, 35,102,102,102,102, 99, 48, 59, 10,125, 10,
10,116, 97, 98,108,101, 46, 98, 97,114, 32,123, 10, 32, 32, 98, 97,
99,107,103,114,111,117,110,100, 45, 99,111,108,111,114, 58, 32, 35,
97, 48, 99, 48,102,102, 59, 10,125, 10, 10,115,112, 97,110, 46, 98,
97,114,116,105,116,108,101, 32,123, 10, 32, 32,102,111,110,116, 45,
119,101,105,103,104,116, 58, 32, 98,111,108,100, 59, 10, 32, 32,102,
111,110,116, 45,115,116,121,108,101, 58, 32,105,116, 97,108,105, 99,
59, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107, 98,108,
117,101, 10,125, 10, 10,115,112, 97,110, 46,102,111,111,116,101,114,
32,123, 10, 32, 32,102,111,110,116, 45,115,116,121,108,101, 58, 32,
105,116, 97,108,105, 99, 59, 10, 32, 32, 99,111,108,111,114, 58, 32,
100, 97,114,107, 98,108,117,101, 10,125, 10, 10, 47, 42, 32,100,101,
102,105,110,105,116,105,111,110, 32,108,105,115,116, 32, 42, 47, 10,
100,108, 32,123, 10, 32, 98,111,114,100,101,114, 58, 32, 51,112,120,
32,100,111,117, 98,108,101, 32, 35, 99, 99, 99, 59, 10, 32,112, 97,
100,100,105,110,103, 58, 32, 48, 46, 53,101,109, 59, 10,125, 10, 10,
47, 42, 32,100,101,102,105,110,105,116,105,111,110, 32,108,105,115,
116, 58, 32,116,101,114,109, 32, 42, 47, 10,100,116, 32,123, 10, 32,
102,108,111, 97,116, 58, 32,108,101,102,116, 59, 10, 32, 99,108,101,
97,114, 58, 32,108,101,102,116, 59, 10, 32,119,105,100,116,104, 58,
32, 97,117,116,111, 59, 32, 47, 42, 32,110,111,114,109, 97,108,108,
121, 32, 98,114,111,119,115,101,114,115, 32,100,101,102, 97,117,108,
116, 32,119,105,100,116,104, 32,111,102, 32,108, 97,114,103,101,115,
116, 32,105,116,101,109, 32, 42, 47, 10, 32,112, 97,100,100,105,110,
103, 45,114,105,103,104,116, 58, 32, 50, 48,112,120, 59, 10, 32,102,
111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100, 59,
10, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,103,114,101,101,
110, 59, 10,125, 10, 10, 47, 42, 32,100,101,102,105,110,105,116,105,
111,110, 32,108,105,115,116, 58, 32,100,101,115, 99,114,105,112,116,
105,111,110, 32, 42, 47, 10,100,100, 32,123, 10, 32,109, 97,114,103,
105,110, 58, 32, 48, 32, 48, 32, 48, 32, 49, 49, 48,112,120, 59, 10,
32,112, 97,100,100,105,110,103, 58, 32, 48, 32, 48, 32, 48, 46, 53,
101,109, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,102,111,114, 32, 98,
114,111,119,115,101,114,115, 32,105,110, 32,115,116, 97,110,100, 97,
114,100,115, 32, 99,111,109,112,108,105, 97,110, 99,101, 32,109,111,
100,101, 32, 42, 47, 10,116,100, 32,112, 32,123, 10, 32, 32,109, 97,
114,103,105,110, 58, 32, 48, 59, 10,125, 10);

View File

@ -70,6 +70,7 @@ resourcestring
SDocMethodOverview = 'Method overview';
SDocPropertyOverview = 'Property overview';
SDocInterfacesOverview = 'Interfaces overview';
SDocInterface = 'Interfaces';
SDocPage = 'Page';
SDocMethod = 'Method';
SDocProperty = 'Property';

View File

@ -89,8 +89,6 @@ type
FOnTest: TNotifyEvent;
FPackage: TPasPackage;
FCharSet : String;
procedure AddElementsFromList(L: TStrings; List: TFPList; UsePathName : Boolean = False);
procedure AppendTypeDecl(AType: TPasType; TableEl, CodeEl: TDomElement);
procedure CreateMinusImage;
procedure CreatePlusImage;
function GetPageCount: Integer;
@ -218,12 +216,10 @@ type
function AppendProcType(CodeEl, TableEl: TDOMElement;
Element: TPasProcedureType; Indent: Integer): TDOMElement;
procedure AppendProcExt(CodeEl: TDOMElement; Element: TPasProcedure);
procedure AppendProcDecl(CodeEl, TableEl: TDOMElement;
Element: TPasProcedureBase);
procedure AppendProcArgsSection(Parent: TDOMNode;
Element: TPasProcedureType; SkipResult : Boolean = False);
function AppendRecordType(CodeEl, TableEl: TDOMElement;
Element: TPasRecordType; NestingLevel: Integer): TDOMElement;
procedure AppendProcDecl(CodeEl, TableEl: TDOMElement; Element: TPasProcedureBase);
procedure AppendProcArgsSection(Parent: TDOMNode; Element: TPasProcedureType; SkipResult : Boolean = False);
function AppendRecordType(CodeEl, TableEl: TDOMElement; Element: TPasRecordType; NestingLevel: Integer): TDOMElement;
procedure CreateMemberDeclarations(AParent: TPasElement; Members: TFPList; TableEl : TDOmelement);
procedure AppendTitle(const AText: DOMString; Hints : TPasMemberHints = []);
procedure AppendMenuBar(ASubpageIndex: Integer);
@ -250,15 +246,15 @@ type
procedure CreateVarPageBody(AVar: TPasVariable);
procedure CreateProcPageBody(AProc: TPasProcedureBase);
Procedure CreateTopicLinks(Node : TDocNode; PasElement : TPasElement);
procedure AddElementsFromList(L: TStrings; List: TFPList; UsePathName : Boolean = False);
procedure AppendTypeDecl(AType: TPasType; TableEl, CodeEl: TDomElement);
public
constructor Create(APackage: TPasPackage; AEngine: TFPDocEngine); override;
destructor Destroy; override;
// Single-page generation
function CreateHTMLPage(AElement: TPasElement;
ASubpageIndex: Integer): TXMLDocument;
function CreateXHTMLPage(AElement: TPasElement;
ASubpageIndex: Integer): TXMLDocument;
function CreateHTMLPage(AElement: TPasElement; ASubpageIndex: Integer): TXMLDocument;
function CreateXHTMLPage(AElement: TPasElement; ASubpageIndex: Integer): TXMLDocument;
// For producing complete package documentation
procedure WriteHTMLPages; virtual;
@ -523,18 +519,6 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
end;
end;
procedure AddPages(AElement: TPasElement; ASubpageIndex: Integer;
AList: TFPList);
var
i: Integer;
begin
if AList.Count > 0 then
begin
AddPage(AElement, ASubpageIndex);
for i := 0 to AList.Count - 1 do
AddPage(TPasElement(AList[i]), 0);
end;
end;
Function HaveClasses(AModule: TPasModule) : Boolean;
@ -545,7 +529,40 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
and (AModule.InterfaceSection.Classes.Count>0);
end;
procedure ScanModule(AModule: TPasModule; LinkList : TObjectList);
procedure AddPages(AElement: TPasElement; ASubpageIndex: Integer;
AList: TFPList);
var
i,j: Integer;
R : TPasRecordtype;
FPEl : TPasElement;
DocNode: TDocNode;
begin
if AList.Count > 0 then
begin
AddPage(AElement, ASubpageIndex);
for i := 0 to AList.Count - 1 do
begin
AddPage(TPasElement(AList[i]), 0);
if (TObject(AList[i]) is TPasRecordType) then
begin
R:=TObject(AList[I]) as TPasRecordType;
For J:=0 to R.Members.Count-1 do
begin
FPEl:=TPasElement(R.Members[J]);
if ((FPEL is TPasProperty) or (FPEL is TPasProcedureBase))
and Engine.ShowElement(FPEl) then
begin
DocNode := Engine.FindDocNode(FPEl);
if Assigned(DocNode) then
AddPage(FPEl, 0);
end;
end;
end;
end;
end;
end;
Procedure AddClassMemberPages(AModule: TPasModule; LinkList : TObjectList);
var
i, j, k: Integer;
s: String;
@ -554,6 +571,71 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
DocNode: TDocNode;
ALink : DOMString;
DidAutolink: Boolean;
begin
for i := 0 to AModule.InterfaceSection.Classes.Count - 1 do
begin
ClassEl := TPasClassType(AModule.InterfaceSection.Classes[i]);
AddPage(ClassEl, 0);
// !!!: Only add when there are items
AddPage(ClassEl, PropertiesByInheritanceSubindex);
AddPage(ClassEl, PropertiesByNameSubindex);
AddPage(ClassEl, MethodsByInheritanceSubindex);
AddPage(ClassEl, MethodsByNameSubindex);
AddPage(ClassEl, EventsByInheritanceSubindex);
AddPage(ClassEl, EventsByNameSubindex);
for j := 0 to ClassEl.Members.Count - 1 do
begin
FPEl := TPasElement(ClassEl.Members[j]);
if Not Engine.ShowElement(FPEl) then
continue;
DocNode := Engine.FindDocNode(FPEl);
if Assigned(DocNode) then
begin
if Assigned(DocNode.Node) then
ALink:=DocNode.Node['link']
else
ALink:='';
If (ALink<>'') then
LinkList.Add(TLinkData.Create(FPEl.PathName,ALink,AModule.name))
else
AddPage(FPEl, 0);
end
else
begin
DidAutolink := False;
if Assigned(ClassEl.AncestorType) and
(ClassEl.AncestorType.ClassType.inheritsfrom(TPasClassType)) then
begin
for k := 0 to TPasClassType(ClassEl.AncestorType).Members.Count - 1 do
begin
AncestorMemberEl :=
TPasElement(TPasClassType(ClassEl.AncestorType).Members[k]);
if AncestorMemberEl.Name = FPEl.Name then
begin
DocNode := Engine.FindDocNode(AncestorMemberEl);
if Assigned(DocNode) then
begin
DidAutolink := True;
Engine.AddLink(FPEl.PathName,
Engine.FindAbsoluteLink(AncestorMemberEl.PathName));
break;
end;
end;
end;
end;
if not DidAutolink then
AddPage(FPEl, 0);
end;
end;
end;
end;
procedure ScanModule(AModule: TPasModule; LinkList : TObjectList);
var
i: Integer;
s: String;
begin
if not assigned(Amodule.Interfacesection) then
exit;
@ -575,65 +657,9 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
if InterfaceSection.Classes.Count > 0 then
begin
AddPage(AModule, ClassesSubindex);
for i := 0 to InterfaceSection.Classes.Count - 1 do
begin
ClassEl := TPasClassType(InterfaceSection.Classes[i]);
AddPage(ClassEl, 0);
// !!!: Only add when there are items
AddPage(ClassEl, PropertiesByInheritanceSubindex);
AddPage(ClassEl, PropertiesByNameSubindex);
AddPage(ClassEl, MethodsByInheritanceSubindex);
AddPage(ClassEl, MethodsByNameSubindex);
AddPage(ClassEl, EventsByInheritanceSubindex);
AddPage(ClassEl, EventsByNameSubindex);
for j := 0 to ClassEl.Members.Count - 1 do
begin
FPEl := TPasElement(ClassEl.Members[j]);
if Not Engine.ShowElement(FPEl) then
continue;
DocNode := Engine.FindDocNode(FPEl);
if Assigned(DocNode) then
begin
if Assigned(DocNode.Node) then
ALink:=DocNode.Node['link']
else
ALink:='';
If (ALink<>'') then
LinkList.Add(TLinkData.Create(FPEl.PathName,ALink,AModule.name))
else
AddPage(FPEl, 0);
end
else
begin
DidAutolink := False;
if Assigned(ClassEl.AncestorType) and
(ClassEl.AncestorType.ClassType.inheritsfrom(TPasClassType)) then
begin
for k := 0 to TPasClassType(ClassEl.AncestorType).Members.Count - 1 do
begin
AncestorMemberEl :=
TPasElement(TPasClassType(ClassEl.AncestorType).Members[k]);
if AncestorMemberEl.Name = FPEl.Name then
begin
DocNode := Engine.FindDocNode(AncestorMemberEl);
if Assigned(DocNode) then
begin
DidAutolink := True;
Engine.AddLink(FPEl.PathName,
Engine.FindAbsoluteLink(AncestorMemberEl.PathName));
break;
end;
end;
end;
end;
if not DidAutolink then
AddPage(FPEl, 0);
end;
end;
end;
AddClassMemberPages(AModule,LinkList);
end;
AddPages(AModule, ProcsSubindex, InterfaceSection.Functions);
AddPages(AModule, VarsSubindex, InterfaceSection.Variables);
end;
@ -1822,7 +1848,7 @@ procedure THTMLWriter.AppendProcDecl(CodeEl, TableEl: TDOMElement;
AppendProcArgsSection(TableEl.ParentNode, AProc.ProcType, SkipResult);
AppendKw(CodeEl, AProc.TypeName);
if Element.Parent.ClassType = TPasClassType then
if (Element.Parent.ClassType = TPasClassType) or (Element.Parent.ClassType = TPasRecordType) then
begin
AppendText(CodeEl, ' ');
AppendHyperlink(CodeEl, Element.Parent);
@ -1908,6 +1934,8 @@ var
Variable: TPasVariable;
TREl, TDEl: TDOMElement;
CurVariant: TPasVariant;
isExtended : Boolean;
begin
if not (Element.Parent is TPasVariant) then
if Element.IsPacked then
@ -1918,18 +1946,28 @@ begin
else
AppendKw(CodeEl, 'record');
for i := 0 to Element.Members.Count - 1 do
begin
Variable := TPasVariable(Element.Members[i]);
TREl := CreateTR(TableEl);
CodeEl := CreateCode(CreatePara(CreateTD_vtop(TREl)));
AppendShortDescrCell(TREl, Variable);
AppendNbSp(CodeEl, NestingLevel * 2 + 2);
AppendText(CodeEl, Variable.Name);
AppendSym(CodeEl, ': ');
CodeEl := AppendType(CodeEl, TableEl, Variable.VarType, False, NestingLevel + 1);
AppendSym(CodeEl, ';');
end;
isExtended:=False;
I:=0;
while (not isExtended) and (I<Element.Members.Count) do
begin
isExtended:=Not (TObject(Element.Members[i]) is TPasVariable);
Inc(i);
end;
if isExtended then
CreateMemberDeclarations(Element,Element.Members,TableEl)
else
for i := 0 to Element.Members.Count - 1 do
begin
Variable := TPasVariable(Element.Members[i]);
TREl := CreateTR(TableEl);
CodeEl := CreateCode(CreatePara(CreateTD_vtop(TREl)));
AppendShortDescrCell(TREl, Variable);
AppendNbSp(CodeEl, NestingLevel * 2 + 2);
AppendText(CodeEl, Variable.Name);
AppendSym(CodeEl, ': ');
CodeEl := AppendType(CodeEl, TableEl, Variable.VarType, False, NestingLevel + 1);
AppendSym(CodeEl, ';');
end;
if Assigned(Element.VariantType) then
begin
@ -3106,6 +3144,143 @@ begin
(Copy(AMember.Name, 1, 2) = 'On');
end;
procedure THTMLWriter.CreateMemberDeclarations(AParent : TPasElement; Members : TFPList; TableEl : TDOmelement);
var
TREl, TDEl, CodeEl: TDOMElement;
DocNode: TDocNode;
Member: TPasElement;
MVisibility,
CurVisibility: TPasMemberVisibility;
i: Integer;
s: String;
t : TPasType;
ah,ol,wt,ct,wc,cc : boolean;
isRecord : Boolean;
begin
isRecord:=AParent is TPasRecordType;
if Members.Count > 0 then
begin
wt:=False;
wc:=False;
CurVisibility := visDefault;
for i := 0 to Members.Count - 1 do
begin
Member := TPasElement(Members[i]);
MVisibility:=Member.Visibility;
ol:=(Member is TPasOverloadedProc);
ah:=ol or ((Member is TPasProcedure) and (TPasProcedure(Member).ProcType.Args.Count > 0));
if ol then
Member:=TPasElement((Member as TPasOverloadedProc).Overloads[0]);
if Not Engine.ShowElement(Member) then
continue;
if (CurVisibility <> MVisibility) then
begin
CurVisibility := MVisibility;
s:=VisibilityNames[MVisibility];
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), s);
end;
ct:=(Member is TPasType);
if ct and (not wt) then
begin
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), 'Type');
end;
wt:=ct;
cc:=(Member is TPasConst);
if cc and (not wc) then
begin
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), 'Const');
end;
wc:=cc;
TREl := CreateTR(TableEl);
CodeEl := CreateCode(CreatePara(CreateTD_vtop(TREl)));
AppendNbSp(CodeEl, 2);
AppendShortDescrCell(TREl, Member);
if (Member is TPasProcedureBase) then
begin
AppendKw(CodeEl, TPasProcedureBase(Member).TypeName + ' ');
AppendHyperlink(CodeEl, Member);
if ah then
AppendSym(CodeEl, '();')
else
AppendSym(CodeEl, ';');
if Not OL then
AppendProcExt(CodeEl, TPasProcedure(Member));
end
else if (Member is TPasConst) then
begin
AppendHyperlink(CodeEl, Member);
If Assigned(TPasConst(Member).VarType) then
begin
AppendSym(CodeEl, ' = ');
AppendTypeDecl(TPasType(Member),TableEl,CodeEl);
end;
AppendSym(CodeEl, ' = ');
AppendText(CodeEl,TPasConst(Member).Expr.GetDeclaration(True));
end
else if (Member is TPasType) then
begin
AppendHyperlink(CodeEl, Member);
AppendSym(CodeEl, ' = ');
AppendTypeDecl(TPasType(Member),TableEl,CodeEl);
end
else if (Member is TPasProperty) then
begin
AppendKw(CodeEl, 'property ');
AppendHyperlink(CodeEl, Member);
t:=TPasProperty(Member).ResolvedType;
if Assigned(T) then
begin
AppendSym(CodeEl, ': ');
AppendHyperlink(CodeEl, T);
end;
AppendSym(CodeEl, ';');
if TPasProperty(Member).IsDefault then
begin
AppendKw(CodeEl, ' default');
AppendSym(CodeEl, ';');
end;
if (TPasProperty(Member).ImplementsName<>'') then
begin
AppendKw(CodeEl, ' implements');
AppendText(CodeEl, ' '+TPasProperty(Member).ImplementsName);
AppendSym(CodeEl, ';');
end;
SetLength(s, 0);
if Length(TPasProperty(Member).ReadAccessorName) > 0 then
s := s + 'r';
if Length(TPasProperty(Member).WriteAccessorName) > 0 then
s := s + 'w';
if Length(TPasProperty(Member).StoredAccessorName) > 0 then
s := s + 's';
if Length(s) > 0 then
AppendText(CodeEl, ' [' + s + ']');
end
else if (Member is TPasVariable) then
begin
if not isRecord then
AppendHyperlink(CodeEl, Member)
else
AppendText(CodeEl, Member.Name);
AppendSym(CodeEl, ': ');
AppendHyperlink(CodeEl, TPasVariable(Member).VarType);
AppendSym(CodeEl, ';');
end
else
AppendText(CreateWarning(CodeEl), '<' + Member.ClassName + '>');
if (Member.Hints<>[]) then
begin
AppendKW(CodeEl,' '+Engine.HintsToStr(Member.Hints));
AppendText(CodeEl, ' ');
AppendSym(CodeEl, ';');
end;
end;
CodeEl := CreateCode(CreatePara(CreateTD(CreateTR(TableEl))));
end;
end;
procedure THTMLWriter.CreateClassPageBody(AClass: TPasClassType;
ASubpageIndex: Integer);
type
@ -3159,14 +3334,7 @@ var
procedure CreateMainPage;
var
TableEl, TREl, TDEl, CodeEl: TDOMElement;
DocNode: TDocNode;
Member: TPasElement;
MVisibility,
CurVisibility: TPasMemberVisibility;
i: Integer;
s: String;
t : TPasType;
ah,ol,wt,ct,wc,cc : boolean;
ThisInterface,
ThisClass: TPasClassType;
HaveSeenTObject: Boolean;
@ -3225,123 +3393,7 @@ var
AppendSym(CodeEl, ')');
end;
end;
if AClass.Members.Count > 0 then
begin
wt:=False;
wc:=False;
CurVisibility := visDefault;
for i := 0 to AClass.Members.Count - 1 do
begin
Member := TPasElement(AClass.Members[i]);
MVisibility:=Member.Visibility;
ol:=(Member is TPasOverloadedProc);
ah:=ol or ((Member is TPasProcedure) and (TPasProcedure(Member).ProcType.Args.Count > 0));
if ol then
Member:=TPasElement((Member as TPasOverloadedProc).Overloads[0]);
if Not Engine.ShowElement(Member) then
continue;
if (CurVisibility <> MVisibility) then
begin
CurVisibility := MVisibility;
s:=VisibilityNames[MVisibility];
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), s);
end;
ct:=(Member is TPasType);
if ct and (not wt) then
begin
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), 'Type');
end;
wt:=ct;
cc:=(Member is TPasConst);
if cc and (not wc) then
begin
AppendKw(CreateCode(CreatePara(CreateTD(CreateTR(TableEl)))), 'Const');
end;
wc:=cc;
TREl := CreateTR(TableEl);
CodeEl := CreateCode(CreatePara(CreateTD_vtop(TREl)));
AppendNbSp(CodeEl, 2);
AppendShortDescrCell(TREl, Member);
if (Member is TPasProcedureBase) then
begin
AppendKw(CodeEl, TPasProcedureBase(Member).TypeName + ' ');
AppendHyperlink(CodeEl, Member);
if ah then
AppendSym(CodeEl, '();')
else
AppendSym(CodeEl, ';');
if Not OL then
AppendProcExt(CodeEl, TPasProcedure(Member));
end
else if (Member is TPasConst) then
begin
AppendHyperlink(CodeEl, Member);
If Assigned(TPasConst(Member).VarType) then
begin
AppendSym(CodeEl, ' = ');
AppendTypeDecl(TPasType(Member),TableEl,CodeEl);
end;
AppendSym(CodeEl, ' = ');
AppendText(CodeEl,TPasConst(Member).Expr.GetDeclaration(True));
end
else if (Member is TPasType) then
begin
AppendHyperlink(CodeEl, Member);
AppendSym(CodeEl, ' = ');
AppendTypeDecl(TPasType(Member),TableEl,CodeEl);
end
else if (Member is TPasProperty) then
begin
AppendKw(CodeEl, 'property ');
AppendHyperlink(CodeEl, Member);
t:=TPasProperty(Member).ResolvedType;
if Assigned(T) then
begin
AppendSym(CodeEl, ': ');
AppendHyperlink(CodeEl, T);
end;
AppendSym(CodeEl, ';');
if TPasProperty(Member).IsDefault then
begin
AppendKw(CodeEl, ' default');
AppendSym(CodeEl, ';');
end;
if (TPasProperty(Member).ImplementsName<>'') then
begin
AppendKw(CodeEl, ' implements');
AppendText(CodeEl, ' '+TPasProperty(Member).ImplementsName);
AppendSym(CodeEl, ';');
end;
SetLength(s, 0);
if Length(TPasProperty(Member).ReadAccessorName) > 0 then
s := s + 'r';
if Length(TPasProperty(Member).WriteAccessorName) > 0 then
s := s + 'w';
if Length(TPasProperty(Member).StoredAccessorName) > 0 then
s := s + 's';
if Length(s) > 0 then
AppendText(CodeEl, ' [' + s + ']');
end
else if (Member is TPasVariable) then
begin
AppendHyperlink(CodeEl, Member);
AppendSym(CodeEl, ': ');
AppendHyperlink(CodeEl, TPasVariable(Member).VarType);
AppendSym(CodeEl, ';');
end
else
AppendText(CreateWarning(CodeEl), '<' + Member.ClassName + '>');
if (Member.Hints<>[]) then
begin
AppendKW(CodeEl,' '+Engine.HintsToStr(Member.Hints));
AppendText(CodeEl, ' ');
AppendSym(CodeEl, ';');
end;
end;
CodeEl := CreateCode(CreatePara(CreateTD(CreateTR(TableEl))));
end;
CreateMemberDeclarations(AClass, AClass.Members,TableEl);
AppendText(CodeEl, ' '); // !!!: Dirty trick, necessary for current XML writer
if not AClass.IsShortDefinition then

View File

@ -29,6 +29,9 @@ const
TIPFExtension = '.ipf';
type
{ TIPFNewWriter }
TIPFNewWriter = class(TLinearWriter)
private
InPackageOverview: Boolean;
@ -85,7 +88,7 @@ type
procedure StartSubSection(SubSectionName : String);override;
procedure StartSubSubSection(SubSubSectionName : String);override;
procedure StartChapter(ChapterName : String); override;
procedure StartOverview(WithAccess : Boolean); override;
procedure StartOverview(Const What : String;WithAccess : Boolean); override;
procedure EndOverview; override;
procedure WriteOverviewMember(const ALabel,AName,Access,ADescr : String); override;
procedure WriteOverviewMember(const ALabel,AName,ADescr : String); override;
@ -613,7 +616,7 @@ end;
{ TLinearWriter overrides}
class function TIPFNewWriter.FileNameExtension: String;
class function TIPFNewWriter.FileNameExtension: string;
begin
Result := TIPFExtension;
end;
@ -641,7 +644,7 @@ begin
Result := StringReplace(Result, ' ', '_', [rfReplaceAll]);
end;
Function TIPFNewWriter.EscapeText(S : String) : String;
function TIPFNewWriter.EscapeText(S: String): String;
var
i: Integer;
begin
@ -697,7 +700,7 @@ begin
end;
end;
Function TIPFNewWriter.StripText(S : String) : String;
function TIPFNewWriter.StripText(S: String): String;
var
I: Integer;
begin
@ -740,7 +743,7 @@ begin
writeln('');
end;
procedure TIPFNewWriter.WriteLabel(const s: String);
procedure TIPFNewWriter.WriteLabel(const S: String);
var
x: String;
begin
@ -762,7 +765,7 @@ begin
end;
end;
procedure TIPFNewWriter.WriteIndex(const s : String);
procedure TIPFNewWriter.WriteIndex(const S: String);
begin
// writeln(':i1 id=' + s + '.');
end;
@ -878,19 +881,19 @@ begin
//Writeln(':h5.' + SubSubSectionName);
end;
Procedure TIPFNewWriter.StartProcedure;
procedure TIPFNewWriter.StartProcedure;
begin
//writeln('');
//writeln(':ul.');
end;
Procedure TIPFNewWriter.EndProcedure;
procedure TIPFNewWriter.EndProcedure;
begin
//writeln('');
//writeln(':eul.');
end;
Procedure TIPFNewWriter.StartSynopsis;
procedure TIPFNewWriter.StartSynopsis;
begin
writeln('');
writeln(':p.');
@ -900,7 +903,7 @@ begin
writeln(':lm margin=3.');
end;
Procedure TIPFNewWriter.StartDeclaration;
procedure TIPFNewWriter.StartDeclaration;
begin
writeln('');
writeln(':p.');
@ -909,7 +912,7 @@ begin
writeln(':lm margin=3.');
end;
Procedure TIPFNewWriter.StartVisibility;
procedure TIPFNewWriter.StartVisibility;
begin
writeln('');
writeln(':p.');
@ -919,7 +922,7 @@ begin
writeln('.br');
end;
Procedure TIPFNewWriter.StartDescription;
procedure TIPFNewWriter.StartDescription;
begin
writeln('');
writeln(':p.');
@ -929,7 +932,7 @@ begin
writeln('.br');
end;
Procedure TIPFNewWriter.StartErrors;
procedure TIPFNewWriter.StartErrors;
begin
writeln('');
writeln(':p.');
@ -949,7 +952,7 @@ begin
writeln('.br');
end;
Procedure TIPFNewWriter.StartAccess;
procedure TIPFNewWriter.StartAccess;
begin
writeln('');
writeln(':p.');
@ -959,14 +962,14 @@ begin
writeln('.br');
end;
Procedure TIPFNewWriter.StartProperty;
procedure TIPFNewWriter.StartProperty;
begin
//writeln('');
//Writeln('.* here I am');
//writeln(':ul.');
end;
Procedure TIPFNewWriter.EndProperty;
procedure TIPFNewWriter.EndProperty;
begin
//writeln('');
//writeln(':eul.');
@ -1003,7 +1006,7 @@ begin
end;
end;
procedure TIPFNewWriter.StartOverview(WithAccess : Boolean);
procedure TIPFNewWriter.StartOverview(const What: String; WithAccess: Boolean);
begin
{
If With access then it is a property overview.
@ -1065,7 +1068,7 @@ begin
WriteLn(Format(':pd. %s', [ADescr]));
end;
Procedure TIPFNewWriter.StartSeeAlso;
procedure TIPFNewWriter.StartSeealso;
begin
writeln('');
writeln(':p.');

View File

@ -75,7 +75,7 @@ Type
procedure StartSubSection(SubSectionName : String);override;
procedure StartSubSubSection(SubSubSectionName : String);override;
procedure StartChapter(ChapterName : String); override;
procedure StartOverview(WithAccess : Boolean); override;
procedure StartOverview(Const What : String; WithAccess : Boolean); override;
procedure EndOverview; override;
procedure WriteOverviewMember(const ALabel,AName,Access,ADescr : String); override;
procedure WriteOverviewMember(const ALabel,AName,ADescr : String); override;
@ -154,7 +154,7 @@ begin
end;
Function TLatexWriter.EscapeText(S : String) : String;
function TLaTeXWriter.EscapeText(S: String): String;
var
i: Integer;
@ -179,7 +179,7 @@ begin
end;
end;
Function TLatexWriter.StripText(S : String) : String;
function TLaTeXWriter.StripText(S: String): String;
var
I: Integer;
@ -476,12 +476,12 @@ begin
// Do nothing
end;
procedure TLaTeXWriter.WriteLabel(const s: String);
procedure TLaTeXWriter.WriteLabel(const S: String);
begin
WriteLnF('\label{%s}', [LowerCase(StripText(s))]);
end;
procedure TLaTeXWriter.WriteIndex(const s : String);
procedure TLaTeXWriter.WriteIndex(const S: String);
begin
Write('\index{');
Write(EscapeText(s));
@ -512,7 +512,7 @@ begin
Writeln('\end{verbatim}')
end;
procedure TLatexWriter.WriteCommentLine;
procedure TLaTeXWriter.WriteCommentLine;
const
CommentLine =
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%';
@ -520,13 +520,13 @@ begin
Writeln(CommentLine);
end;
procedure TLatexWriter.WriteComment(Comment : String);
procedure TLaTeXWriter.WriteComment(Comment: String);
begin
Write('% ');
Writeln(Comment);
end;
procedure TLatexWriter.StartChapter(ChapterName : String);
procedure TLaTeXWriter.StartChapter(ChapterName: String);
begin
WriteCommentLine;
WriteComment(ChapterName);
@ -534,20 +534,20 @@ begin
Writeln('\chapter{'+EscapeText(ChapterName)+'}');
end;
procedure TLatexWriter.StartSection(SectionName : String);
procedure TLaTeXWriter.StartSection(SectionName: String);
begin
WriteCommentLine;
WriteComment(SectionName);
Writeln('\section{'+EscapeText(SectionName)+'}');
end;
procedure TLatexWriter.StartSubSection(SubSectionName : String);
procedure TLaTeXWriter.StartSubSection(SubSectionName: String);
begin
WriteComment(SubSectionName);
Writeln('\subsection{'+EscapeText(SubSectionName)+'}');
end;
procedure TLatexWriter.StartSubSubSection(SubSubSectionName : String);
procedure TLaTeXWriter.StartSubSubSection(SubSubSectionName: String);
begin
Writeln('\subsubsection{'+EscapeText(SubSubSectionName)+'}');
end;
@ -564,38 +564,38 @@ begin
end;
end;
Procedure TLatexWriter.StartProcedure;
procedure TLaTeXWriter.StartProcedure;
begin
Writeln('\begin{FPCList}');
InList:=True;
end;
Procedure TLatexWriter.StartSynopsis;
procedure TLaTeXWriter.StartSynopsis;
begin
Writeln('\Synopsis');
end;
Procedure TLatexWriter.StartDeclaration;
procedure TLaTeXWriter.StartDeclaration;
begin
Writeln('\Declaration ');
end;
Procedure TLatexWriter.StartVisibility;
procedure TLaTeXWriter.StartVisibility;
begin
Writeln('\Visibility');
end;
Procedure TLatexWriter.StartDescription;
procedure TLaTeXWriter.StartDescription;
begin
Writeln('\Description');
end;
Procedure TLatexWriter.StartErrors;
procedure TLaTeXWriter.StartErrors;
begin
Writeln('\Errors');
@ -606,68 +606,69 @@ begin
Writeln('\VersionInfo');
end;
Procedure TLatexWriter.StartAccess;
procedure TLaTeXWriter.StartAccess;
begin
Writeln('\Access')
end;
Procedure TLatexWriter.EndProcedure;
procedure TLaTeXWriter.EndProcedure;
begin
InList:=False;
Writeln('\end{FPCList}');
end;
Procedure TLatexWriter.StartProperty;
procedure TLaTeXWriter.StartProperty;
begin
Writeln('\begin{FPCList}');
InList:=True;
end;
Procedure TLatexWriter.EndProperty;
procedure TLaTeXWriter.EndProperty;
begin
InList:=False;
Writeln('\end{FPCList}');
end;
procedure TLateXWriter.WriteExampleFile(FN : String);
procedure TLaTeXWriter.WriteExampleFile(FN: String);
begin
If (FN<>'') then
WritelnF('\FPCexample{%s}', [ChangeFileExt(FN,'')]);
end;
procedure TLatexWriter.StartOverview(WithAccess : Boolean);
procedure TLaTeXWriter.StartOverview(const What: String; WithAccess: Boolean);
begin
If WithAccess then
begin
WriteLn('\begin{tabularx}{\textwidth}{lllX}');
WriteLnF('%s & %s & %s & %s \\ \hline',[EscapeText(SDocPage), EscapeText(SDocProperty), EscapeText(SDocAccess), EscapeText(SDocDescription)])
WriteLnF('%s & %s & %s & %s \\ \hline',[EscapeText(SDocPage), EscapeText(What), EscapeText(SDocAccess), EscapeText(SDocDescription)])
end
else
begin
WriteLn('\begin{tabularx}{\textwidth}{llX}');
WriteLnF('%s & %s & %s \\ \hline',[EscapeText(SDocPage), EscapeText(SDocProperty), EscapeText(SDocDescription)])
WriteLnF('%s & %s & %s \\ \hline',[EscapeText(SDocPage), EscapeText(What), EscapeText(SDocDescription)])
end;
end;
procedure TLatexWriter.EndOverview;
procedure TLaTeXWriter.EndOverview;
begin
WriteLn('\hline');
WriteLn('\end{tabularx}');
end;
procedure TLatexWriter.WriteOverviewMember(const ALabel,AName,Access,ADescr : String);
procedure TLaTeXWriter.WriteOverviewMember(const ALabel, AName, Access,
ADescr: String);
begin
WriteLnF('\pageref{%s} & %s & %s & %s \\',[ALabel,EscapeText(AName),Access,ADescr]);
end;
procedure TLatexWriter.WriteOverviewMember(const ALabel,AName,ADescr : String);
procedure TLaTeXWriter.WriteOverviewMember(const ALabel, AName, ADescr: String);
begin
WriteLnF('\pageref{%s} & %s & %s \\',[ALabel,EscapeText(AName),ADescr]);
@ -678,7 +679,7 @@ begin
Result:=TexExtension;
end;
Procedure TLatexWriter.StartSeeAlso;
procedure TLaTeXWriter.StartSeealso;
begin
If not InList then
@ -695,7 +696,7 @@ begin
Writeln('\end{FPCList}');
end;
procedure TLatexWriter.StartUnitOverview(AModuleName,AModuleLabel : String);
procedure TLaTeXWriter.StartUnitOverview(AModuleName, AModuleLabel: String);
begin
WriteLnF('\begin{FPCltable}{lr}{%s}{%s:0units}',
@ -703,20 +704,20 @@ begin
WriteLn('Name & Page \\ \hline');
end;
procedure TLatexWriter.WriteUnitEntry(UnitRef : TPasType);
procedure TLaTeXWriter.WriteUnitEntry(UnitRef: TPasType);
begin
WriteLnF('%s\index{unit!%s} & \pageref{%s} \\',
[EscapeText(UnitRef.Name), EscapeText(UnitRef.Name), StripText(GetLabel(UnitRef))]);
end;
procedure TLatexWriter.EndUnitOverview;
procedure TLaTeXWriter.EndUnitOverview;
begin
WriteLn('\end{FPCltable}');
end;
Function TLatexWriter.InterPretOption(Const Cmd,Arg : String) : boolean;
function TLaTeXWriter.InterPretOption(const Cmd, Arg: String): boolean;
begin
Result:=True;

View File

@ -110,7 +110,7 @@ type
procedure StartSubSection(SubSectionName : String);override;
procedure StartSubSubSection(SubSubSectionName : String);override;
procedure StartChapter(ChapterName : String); override;
procedure StartOverview(WithAccess : Boolean); 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;
@ -185,7 +185,7 @@ begin
end;
Function TRTFWriter.EscapeText(S : String) : String;
function TRTFWriter.EscapeText(S: String): String;
var
i: Integer;
@ -206,7 +206,7 @@ begin
end;
end;
Function TRTFWriter.StripText(S : String) : String;
function TRTFWriter.StripText(S: String): String;
var
I: Integer;
@ -558,14 +558,14 @@ begin
write('\cell');
end;
procedure TRTFWriter.WriteLabel(const s: String);
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);
procedure TRTFWriter.WriteIndex(const S: String);
begin
Write('{\xe{\v '+EscapeText(s)+'}}');
end;
@ -632,57 +632,57 @@ begin
EscapeText(SubSubSectionName)]);
end;
Procedure TRTFWriter.StartProcedure;
procedure TRTFWriter.StartProcedure;
begin
Write('{\pard');
end;
Procedure TRTFWriter.StartProperty;
procedure TRTFWriter.StartProperty;
begin
Write('{\pard');
end;
Procedure TRTFWriter.Header(text:string; font:integer);
procedure TRTFWriter.Header(text: string; font: integer);
begin
WriteF('\par\s9 %s\pard\par\s10\f%d ',[text, font]);
end;
Procedure TRTFWriter.StartSynopsis;
procedure TRTFWriter.StartSynopsis;
begin
Header(SDocSynopsis,2);
end;
Procedure TRTFWriter.StartDeclaration;
procedure TRTFWriter.StartDeclaration;
begin
Header(SDocDeclaration,1);
end;
Procedure TRTFWriter.StartVisibility;
procedure TRTFWriter.StartVisibility;
begin
Header(SDocVisibility,2);
end;
Procedure TRTFWriter.StartDescription;
procedure TRTFWriter.StartDescription;
begin
Header(SDocDescription,2);
end;
Procedure TRTFWriter.StartErrors;
procedure TRTFWriter.StartErrors;
begin
Header(SDocErrors,2);
end;
Procedure TRTFWriter.StartAccess;
procedure TRTFWriter.StartAccess;
begin
Header(SDocAccess,2)
end;
Procedure TRTFWriter.EndProcedure;
procedure TRTFWriter.EndProcedure;
begin
Write('}');
end;
Procedure TRTFWriter.EndProperty;
procedure TRTFWriter.EndProperty;
begin
Write('}');
end;
@ -705,14 +705,14 @@ begin
end;
end;
procedure TRTFWriter.StartOverview(WithAccess : Boolean);
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(SDocProperty), EscapeText(SDocAccess), EscapeText(SDocDescription)])
[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(SDocProperty), EscapeText(SDocDescription)]);
[EscapeText(SDocPage), EscapeText(What), EscapeText(SDocDescription)]);
end;
procedure TRTFWriter.WriteOverviewMember(const ALabel,AName,Access,ADescr : String);
@ -736,7 +736,7 @@ begin
Write ('\par');
end;
Procedure TRTFWriter.StartSeeAlso;
procedure TRTFWriter.StartSeealso;
begin
Header(SDocSeeAlso, 2);
end;
@ -776,7 +776,7 @@ begin
end;
end;
Function TRTFWriter.InterPretOption(Const Cmd,Arg : String) : boolean;
function TRTFWriter.InterPretOption(const Cmd, Arg: String): boolean;
begin
if Cmd = '--RTF-extension' then
begin

View File

@ -960,8 +960,6 @@ procedure TManWriter.WriteDoc;
var
i : Integer;
L : TstringList;
DocNode : TDocNode;
begin
PackageName := LowerCase(Copy(Package.Name, 2, 255));
If (Engine.Output<>'') then

View File

@ -78,7 +78,7 @@ Type
procedure StartSubSection(SubSectionName : String);override;
procedure StartSubSubSection(SubSubSectionName : String);override;
procedure StartChapter(ChapterName : String); override;
procedure StartOverview(WithAccess : Boolean); override;
procedure StartOverview(Const What : String;WithAccess : Boolean); override;
procedure EndOverview; override;
procedure WriteOverviewMember(const ALabel,AName,Access,ADescr : String); override;
procedure WriteOverviewMember(const ALabel,AName,ADescr : String); override;
@ -135,7 +135,7 @@ Type
end;
procedure TTxtWriter.WriteUnderline(Const Msg : String; DoubleLine : Boolean);
procedure TTXTWriter.WriteUnderline(const Msg: String; DoubleLine: Boolean);
Var
L : Integer;
@ -146,7 +146,7 @@ begin
WriteLine(L,DoubleLine);
end;
procedure TTxtWriter.WriteLine(DoubleLine : Boolean);
procedure TTXTWriter.WriteLine(DoubleLine: Boolean);
begin
Writeline(LineWidth,DoubleLine);
@ -216,14 +216,14 @@ begin
end;
end;
procedure TTxtWriter.NewLine;
procedure TTXTWriter.NewLine;
begin
If Not FCurrentPos=0 then
Writeln('');
end;
procedure TTxtWriter.WriteLine(LineLength : Integer; DoubleLine : Boolean);
procedure TTXTWriter.WriteLine(LineLength: Integer; DoubleLine: Boolean);
begin
NewLine;
@ -234,7 +234,7 @@ begin
end;
function TTxtWriter.GetLabel(AElement: TPasElement): String;
function TTXTWriter.GetLabel(AElement: TPasElement): String;
begin
if AElement.ClassType = TPasUnresolvedTypeRef then
@ -246,87 +246,87 @@ begin
end;
end;
procedure TTxtWriter.DescrBeginBold;
procedure TTXTWriter.DescrBeginBold;
begin
end;
procedure TTxtWriter.DescrEndBold;
procedure TTXTWriter.DescrEndBold;
begin
end;
procedure TTxtWriter.DescrBeginItalic;
procedure TTXTWriter.DescrBeginItalic;
begin
end;
procedure TTxtWriter.DescrEndItalic;
procedure TTXTWriter.DescrEndItalic;
begin
end;
procedure TTxtWriter.DescrBeginEmph;
procedure TTXTWriter.DescrBeginEmph;
begin
end;
procedure TTxtWriter.DescrEndEmph;
procedure TTXTWriter.DescrEndEmph;
begin
end;
procedure TTxtWriter.DescrWriteFileEl(const AText: DOMString);
procedure TTXTWriter.DescrWriteFileEl(const AText: DOMString);
begin
DescrWriteText(AText);
end;
procedure TTxtWriter.DescrWriteKeywordEl(const AText: DOMString);
procedure TTXTWriter.DescrWriteKeywordEl(const AText: DOMString);
begin
DescrWriteText(AText);
end;
procedure TTxtWriter.DescrWriteVarEl(const AText: DOMString);
procedure TTXTWriter.DescrWriteVarEl(const AText: DOMString);
begin
DescrWriteText(AText);
end;
procedure TTxtWriter.DescrBeginLink(const AId: DOMString);
procedure TTXTWriter.DescrBeginLink(const AId: DOMString);
begin
Write('[');
end;
procedure TTxtWriter.DescrEndLink;
procedure TTXTWriter.DescrEndLink;
begin
Write('] ');
end;
procedure TTxtWriter.DescrWriteLinebreak;
procedure TTXTWriter.DescrWriteLinebreak;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginParagraph;
procedure TTXTWriter.DescrBeginParagraph;
begin
// Do nothing
end;
procedure TTxtWriter.DescrEndParagraph;
procedure TTXTWriter.DescrEndParagraph;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginCode(HasBorder: Boolean;
procedure TTXTWriter.DescrBeginCode(HasBorder: Boolean;
const AHighlighterName: String);
begin
StartListing(HasBorder,'');
end;
procedure TTxtWriter.DescrWriteCodeLine(const ALine: String);
procedure TTXTWriter.DescrWriteCodeLine(const ALine: String);
begin
WriteLn(ALine);
end;
procedure TTxtWriter.DescrEndCode;
procedure TTXTWriter.DescrEndCode;
begin
EndListing
end;
procedure TTxtWriter.NewListLevel(Initial : Integer);
procedure TTXTWriter.NewListLevel(Initial: Integer);
begin
Inc(FListLevel);
@ -334,44 +334,44 @@ begin
FLists[FListLevel]:=0;
end;
procedure TTxtWriter.DecListLevel;
procedure TTXTWriter.declistlevel;
begin
If (FListLevel>0) then
Dec(FListLevel)
end;
procedure TTxtWriter.DescrBeginOrderedList;
procedure TTXTWriter.DescrBeginOrderedList;
begin
NewListLevel(0);
end;
procedure TTxtWriter.DescrEndOrderedList;
procedure TTXTWriter.DescrEndOrderedList;
begin
DecListLevel;
end;
procedure TTxtWriter.DescrBeginUnorderedList;
procedure TTXTWriter.DescrBeginUnorderedList;
begin
NewListLevel(-1);
end;
procedure TTxtWriter.DescrEndUnorderedList;
procedure TTXTWriter.DescrEndUnorderedList;
begin
DecListLevel;
end;
procedure TTxtWriter.DescrBeginDefinitionList;
procedure TTXTWriter.DescrBeginDefinitionList;
begin
NewListLevel(-2);
end;
procedure TTxtWriter.DescrEndDefinitionList;
procedure TTXTWriter.DescrEndDefinitionList;
begin
DecListLevel;
end;
procedure TTxtWriter.DescrBeginListItem;
procedure TTXTWriter.DescrBeginListItem;
begin
If FLists[FListLevel]>=0 then
begin
@ -381,105 +381,105 @@ begin
Write(' ');
end;
procedure TTxtWriter.DescrEndListItem;
procedure TTXTWriter.DescrEndListItem;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginDefinitionTerm;
procedure TTXTWriter.DescrBeginDefinitionTerm;
begin
Write('<<');
end;
procedure TTxtWriter.DescrEndDefinitionTerm;
procedure TTXTWriter.DescrEndDefinitionTerm;
begin
WriteLn('>>:');
end;
procedure TTxtWriter.DescrBeginDefinitionEntry;
procedure TTXTWriter.DescrBeginDefinitionEntry;
begin
// Do nothing
end;
procedure TTxtWriter.DescrEndDefinitionEntry;
procedure TTXTWriter.DescrEndDefinitionEntry;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginSectionTitle;
procedure TTXTWriter.DescrBeginSectionTitle;
begin
Inc(FSectionCount);
WritelnF('%s %d.%d: ',[SDocSection,FChapterCount,FSectionCount]);
end;
procedure TTxtWriter.DescrBeginSectionBody;
procedure TTXTWriter.DescrBeginSectionBody;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrEndSection;
procedure TTXTWriter.DescrEndSection;
begin
// Do noting
end;
procedure TTxtWriter.DescrBeginRemark;
procedure TTXTWriter.DescrBeginRemark;
begin
WriteLn(SDocRemark+': ');
end;
procedure TTxtWriter.DescrEndRemark;
procedure TTXTWriter.DescrEndRemark;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginTable(ColCount: Integer; HasBorder: Boolean);
procedure TTXTWriter.DescrBeginTable(ColCount: Integer; HasBorder: Boolean);
begin
WriteLine(False);
end;
procedure TTxtWriter.DescrEndTable;
procedure TTXTWriter.DescrEndTable;
begin
WriteLine(False);
end;
procedure TTxtWriter.DescrBeginTableCaption;
procedure TTXTWriter.DescrBeginTableCaption;
begin
// Do nothing.
end;
procedure TTxtWriter.DescrEndTableCaption;
procedure TTXTWriter.DescrEndTableCaption;
begin
Inc(FTableCount);
WriteF('%s %d :',[SDoctable,FTableCount]);
TableCaptionWritten := True;
end;
procedure TTxtWriter.DescrBeginTableHeadRow;
procedure TTXTWriter.DescrBeginTableHeadRow;
begin
if not TableCaptionWritten then
DescrEndTableCaption;
TableRowStartFlag := True;
end;
procedure TTxtWriter.DescrEndTableHeadRow;
procedure TTXTWriter.DescrEndTableHeadRow;
begin
WriteLine(False);
end;
procedure TTxtWriter.DescrBeginTableRow;
procedure TTXTWriter.DescrBeginTableRow;
begin
if not TableCaptionWritten then
DescrEndTableCaption;
TableRowStartFlag := True;
end;
procedure TTxtWriter.DescrEndTableRow;
procedure TTXTWriter.DescrEndTableRow;
begin
WriteLn('');
end;
procedure TTxtWriter.DescrBeginTableCell;
procedure TTXTWriter.DescrBeginTableCell;
begin
if TableRowStartFlag then
TableRowStartFlag := False
@ -487,7 +487,7 @@ begin
Write(' ');
end;
procedure TTxtWriter.DescrEndTableCell;
procedure TTXTWriter.DescrEndTableCell;
begin
// Do nothing
end;
@ -514,15 +514,15 @@ begin
Result:=inherited InterpretOption(Cmd, Arg);
end;
procedure TTxtWriter.WriteLabel(const s: String);
procedure TTXTWriter.WriteLabel(const S: String);
begin
end;
procedure TTxtWriter.WriteIndex(const s : String);
procedure TTXTWriter.WriteIndex(const S: String);
begin
end;
procedure TTxtWriter.StartListing(Frames: Boolean; const name: String);
procedure TTXTWriter.StartListing(Frames: Boolean; const name: String);
begin
FInVerbatim:=True;
If (Name<>'') then
@ -533,21 +533,21 @@ begin
WriteLn('');
end;
procedure TTxtWriter.EndListing;
procedure TTXTWriter.EndListing;
begin
FInVerbatim:=False;
end;
procedure TTxtWriter.WriteCommentLine;
procedure TTXTWriter.WriteCommentLine;
begin
end;
procedure TTxtWriter.WriteComment(Comment : String);
procedure TTXTWriter.WriteComment(Comment: String);
begin
end;
procedure TTxtWriter.StartChapter(ChapterName : String);
procedure TTXTWriter.StartChapter(ChapterName: String);
begin
Inc(FChapterCount);
FSectionCount:=0;
@ -559,7 +559,7 @@ begin
Writeln('');
end;
procedure TTxtWriter.StartSection(SectionName : String);
procedure TTXTWriter.StartSection(SectionName: String);
begin
Inc(FSectionCount);
FSubSectionCount:=0;
@ -570,7 +570,7 @@ begin
Writeln('');
end;
procedure TTxtWriter.StartSubSection(SubSectionName : String);
procedure TTXTWriter.StartSubSection(SubSectionName: String);
begin
Inc(FSubSectionCount);
Writeln('');
@ -579,7 +579,7 @@ begin
Writeln('');
end;
procedure TTxtWriter.StartSubSubSection(SubSubSectionName : String);
procedure TTXTWriter.StartSubSubSection(SubSubSectionName: String);
begin
Writeln('');
Writeln(SubSubSectionName);
@ -598,7 +598,7 @@ begin
end;
end;
procedure TTxtWriter.WriteExampleFile(FN : String);
procedure TTXTWriter.WriteExampleFile(FN: String);
Var
L : TStringList;
@ -622,51 +622,52 @@ begin
end;
end;
procedure TTxtWriter.StartOverview(WithAccess : Boolean);
procedure TTXTWriter.StartOverview(const What: String; WithAccess: Boolean);
begin
If WithAccess then
WriteUnderLine(Format('%.30s %.10s %s',[EscapeText(SDocProperty), EscapeText(SDocAccess), EscapeText(SDocDescription)]),False)
WriteUnderLine(Format('%.30s %.10s %s',[EscapeText(What), EscapeText(SDocAccess), EscapeText(SDocDescription)]),False)
else
WriteUnderLine(Format('%.30s %s',[EscapeText(SDocMethod), EscapeText(SDocDescription)]),False);
WriteUnderLine(Format('%.30s %s',[EscapeText(What), EscapeText(SDocDescription)]),False);
end;
procedure TTxtWriter.EndOverview;
procedure TTXTWriter.EndOverview;
begin
WriteLine(False);
end;
procedure TTxtWriter.WriteOverviewMember(const ALabel,AName,Access,ADescr : String);
procedure TTXTWriter.WriteOverviewMember(const ALabel, AName, Access,
ADescr: String);
begin
WriteLnF('%.30s %.10s %s',[AName,Access,ADescr]);
end;
procedure TTxtWriter.WriteOverviewMember(const ALabel,AName,ADescr : String);
procedure TTXTWriter.WriteOverviewMember(const ALabel, AName, ADescr: String);
begin
WriteLnF('%.30s %s ',[AName,ADescr]);
end;
class function TTxtWriter.FileNameExtension: String;
class function TTXTWriter.FileNameExtension: String;
begin
Result:=TxtExtension;
end;
procedure TTxtWriter.StartUnitOverview(AModuleName,AModuleLabel : String);
procedure TTXTWriter.StartUnitOverview(AModuleName, AModuleLabel: String);
begin
WriteUnderLine('Unit Name',False);
end;
procedure TTxtWriter.WriteUnitEntry(UnitRef : TPasType);
procedure TTXTWriter.WriteUnitEntry(UnitRef: TPasType);
begin
Writeln(EscapeText(UnitRef.Name));
end;
procedure TTxtWriter.EndUnitOverview;
procedure TTXTWriter.EndUnitOverview;
begin
Writeln('');

View File

@ -78,7 +78,7 @@ Type
procedure StartListing(Frames: Boolean; const name: String); virtual; abstract;
procedure EndListing; virtual; abstract;
Procedure WriteExampleFile(FN : String); virtual; abstract;
procedure StartOverview(WithAccess : Boolean); virtual; Abstract;
procedure StartOverview(Const What : String; WithAccess : Boolean); virtual; Abstract;
procedure EndOverview; virtual; Abstract;
procedure WriteOverviewMember(const ALabel,AName,Access,ADescr : String); virtual; Abstract;
procedure WriteOverviewMember(const ALabel,AName,ADescr : String); virtual; Abstract;
@ -106,9 +106,10 @@ Type
procedure WriteFunctionsAndProcedures(ASection: TPasSection);
procedure WriteProcedure(ProcDecl: TPasProcedureBase);
procedure WriteClasses(ASection: TPasSection);
Procedure WriteExtendedRecords(Asection : TPasSection);
procedure WriteClassDecl(ClassDecl: TPasClassType);
procedure WriteClassMethodOverview(ClassDecl: TPasClassType);
procedure WriteClassPropertyOverview(ClassDecl: TPasClassType);
procedure WriteMethodOverview(AParent: TPasType; Members : TFPList);
procedure WritePropertyOverview(AParent: TPasType; Members : TFPList);
procedure WriteClassInterfacesOverview(ClassDecl: TPasClassType);
procedure WriteClassInheritanceOverview(ClassDecl: TPasClassType); virtual;
procedure WriteProperty(PropDecl: TPasProperty);
@ -128,14 +129,14 @@ const
Writing support
---------------------------------------------------------------------}
Function TLinearWriter.PushWriteContext(S : TStream) : TStream;
function TLinearWriter.PushWriteContext(S: TStream): TStream;
begin
Result:=FStream;
FStream:=S;
end;
Procedure TLinearWriter.PopWriteContext(S : TSTream);
procedure TLinearWriter.PopWriteContext(S: TSTream);
begin
FStream:=S;
@ -174,7 +175,8 @@ begin
Write(EscapeText(AText));
end;
Function TLinearWriter.GetDescrString(AContext: TPasElement; DescrNode: TDOMElement) : String;
function TLinearWriter.GetDescrString(AContext: TPasElement;
DescrNode: TDOMElement): String;
Var
S : TStringStream;
@ -274,74 +276,74 @@ end;
Default implementations, may be overridden in descendents
---------------------------------------------------------------------}
Function TLinearWriter.EscapeText(S : String) : String;
function TLinearWriter.EscapeText(S: String): String;
begin
Result:=S;
end;
Function TLinearWriter.StripText(S : String) : String;
function TLinearWriter.StripText(S: String): String;
begin
Result:=S;
end;
Procedure TLinearWriter.StartProcedure;
procedure TLinearWriter.StartProcedure;
begin
Writeln(SDocProcedure+':');
end;
Procedure TLinearWriter.StartSynopsis;
procedure TLinearWriter.StartSynopsis;
begin
Writeln('');
Writeln(SDocSynopsis+':');
end;
Procedure TLinearWriter.StartDeclaration;
procedure TLinearWriter.StartDeclaration;
begin
Writeln('');
Writeln(SDocDeclaration+':');
end;
Procedure TLinearWriter.StartVisibility;
procedure TLinearWriter.StartVisibility;
begin
Writeln('');
Writeln(SDocVisibility+':');
end;
Procedure TLinearWriter.StartDescription;
procedure TLinearWriter.StartDescription;
begin
Writeln('');
Writeln(SDocDescription+':');
end;
Procedure TLinearWriter.StartAccess;
procedure TLinearWriter.StartAccess;
begin
Writeln('');
Writeln(SDocAccess+':');
end;
Procedure TLinearWriter.StartErrors;
procedure TLinearWriter.StartErrors;
begin
Writeln('');
Writeln(SDocErrors+':');
end;
Procedure TLinearWriter.StartVersion;
procedure TLinearWriter.StartVersion;
begin
Writeln('');
Writeln(SDocVersion+':');
end;
Procedure TLinearWriter.StartSeealso;
procedure TLinearWriter.StartSeealso;
begin
Writeln('');
@ -349,20 +351,20 @@ begin
end;
Procedure TLinearWriter.StartProperty;
procedure TLinearWriter.StartProperty;
begin
Writeln('');
Writeln(SDocProperty+':');
end;
Procedure TLinearWriter.EndProcedure;
procedure TLinearWriter.EndProcedure;
begin
Writeln('');
end;
Procedure TLinearWriter.EndProperty;
procedure TLinearWriter.EndProperty;
begin
Writeln('');
@ -422,9 +424,9 @@ begin
// Write Interfaces Overview;
WriteClassInterfacesOverView(ClassDecl);
// Write method overview
WriteClassMethodOverView(ClassDecl);
WriteMethodOverView(ClassDecl,ClassDecl.Members);
// Write Property Overview;
WriteClassPropertyOverView(ClassDecl);
WritePropertyOverView(ClassDecl,ClassDecl.Members);
// Write method & property descriptions
@ -448,7 +450,7 @@ begin
end;
procedure TLinearWriter.WriteClassPropertyOverview(ClassDecl : TPasClassType);
procedure TLinearWriter.WritePropertyOverview(AParent: TPasType; Members : TFPList);
var
Member: TPasElement;
@ -462,9 +464,9 @@ begin
List:=TStringList.Create;
Try
List.Sorted:=True;
for i := 0 to ClassDecl.Members.Count - 1 do
for i := 0 to Members.Count - 1 do
begin
Member := TPasElement(ClassDecl.Members[i]);
Member := TPasElement(Members[i]);
With Member do
if InheritsFrom(TPasProperty) and SHowMember(Member) then
List.AddObject(Member.Name,Member)
@ -472,8 +474,8 @@ begin
If (List.Count>0) then
begin
StartSubSection(SDocPropertyOverview);
WriteLabel(GetLabel(ClassDecl) + ':Properties');
StartOverView(True);
WriteLabel(GetLabel(AParent) + ':Properties');
StartOverView(SDocProperties,True);
For I:=0 to List.Count-1 do
begin
Member:=TPasElement(List.objects[i]);
@ -535,7 +537,7 @@ begin
begin
StartSubSection(SDocInterfacesOverview);
WriteLabel(GetLabel(ClassDecl) + ':Interfaces');
StartOverView(False);
StartOverView(SDocInterface,False);
for i := 0 to List.Count-1 do
begin
lInterface := TPasElement(List.Objects[i]);
@ -648,6 +650,7 @@ begin
WriteVarsConstsTypes(ASection);
WriteFunctionsAndProcedures(ASection);
WriteExtendedRecords(ASection);
WriteClasses(ASection);
end;
@ -721,7 +724,7 @@ begin
end;
end;
Procedure TLinearWriter.ProcessPackage;
procedure TLinearWriter.ProcessPackage;
var
DocNode: TDocNode;
@ -740,7 +743,7 @@ begin
ProcessTopics(DocNode,1);
end;
Procedure TLinearWriter.ProcessTopics(DocNode : TDocNode; Alevel : Integer);
procedure TLinearWriter.ProcessTopics(DocNode: TDocNode; Alevel: Integer);
Var
Node : TDocNode;
@ -758,7 +761,7 @@ begin
end;
Procedure TLinearWriter.WriteTopicNode(Node : TDocNode; Level : Integer);
procedure TLinearWriter.WriteTopicNode(Node: TDocNode; Level: Integer);
Var
Element : TTopicElement;
@ -860,48 +863,53 @@ end;
procedure TLinearWriter.WriteTypes(ASection: TPasSection);
var
i: Integer;
i,j: Integer;
TypeDecl: TPasType;
Recdecl: TPasRecordType;
Member : TPasElement;
DocNode : TDocNode;
begin
if ASection.Types.Count > 0 then
begin
begin
StartSubSection(SDocTypes,ModuleName+'Types');
for i := 0 to ASection.Types.Count - 1 do
begin
DescrBeginParagraph;
TypeDecl := TPasType(ASection.Types[i]);
WriteTypeDecl(TypeDecl);
StartListing(False,'');
DocNode := Engine.FindDocNode(TypeDecl);
If Assigned(DocNode) and
Assigned(DocNode.Node) and
(Docnode.Node['opaque']='1') then
Writeln(TypeDecl.Name+' = '+SDocOpaque)
else
begin
Writeln(EscapeText(TypeDecl.GetDeclaration(True)));
end;
EndListing;
WriteLabel(TypeDecl);
WriteIndex(TypeDecl);
If TypeDecl is TPasEnumType then
WriteENumElements(TypeDecl as TPasEnumType)
else If (TypeDecl is TPasSetType)
and (TPasSetType(TypeDecl).EnumType is TPasEnumType)
and (TPasSetType(TypeDecl).EnumType.Name='') then
WriteENumElements(TPasSetType(TypeDecl).EnumType as TPasEnumType);
WriteDescr(TypeDecl,DocNode);
If Assigned(DocNode) and Assigned(DocNode.Version) then
TypeDecl := TPasType(ASection.Types[i]);
if not ((TypeDecl is TPasRecordType) and TPasRecordType(TypeDecl).IsAdvancedRecord) then
begin
Writeln(Format('%s : ',[SDocVersion]));
WriteDescr(TypeDecl, DocNode.Version);
DescrBeginParagraph;
WriteTypeDecl(TypeDecl);
StartListing(False,'');
DocNode := Engine.FindDocNode(TypeDecl);
If Assigned(DocNode) and
Assigned(DocNode.Node) and
(Docnode.Node['opaque']='1') then
Writeln(TypeDecl.Name+' = '+SDocOpaque)
else
begin
Writeln(EscapeText(TypeDecl.GetDeclaration(True)));
end;
EndListing;
WriteLabel(TypeDecl);
WriteIndex(TypeDecl);
If TypeDecl is TPasEnumType then
WriteENumElements(TypeDecl as TPasEnumType)
else If (TypeDecl is TPasSetType)
and (TPasSetType(TypeDecl).EnumType is TPasEnumType)
and (TPasSetType(TypeDecl).EnumType.Name='') then
WriteENumElements(TPasSetType(TypeDecl).EnumType as TPasEnumType);
WriteDescr(TypeDecl,DocNode);
If Assigned(DocNode) and Assigned(DocNode.Version) then
begin
Writeln(Format('%s : ',[SDocVersion]));
WriteDescr(TypeDecl, DocNode.Version);
end;
if Assigned(DocNode) and assigned(DocNode.Notes) then
ConvertNotes(TypeDecl,DocNode.Notes);
DescrEndParagraph;
end;
if Assigned(DocNode) and assigned(DocNode.Notes) then
ConvertNotes(TypeDecl,DocNode.Notes);
DescrEndParagraph;
end;
end;
end;
end;
procedure TLinearWriter.WriteVars(ASection: TPasSection);
@ -945,7 +953,7 @@ var
begin
With ProcDecl do
begin
if Not (Assigned(Parent) and Parent.InheritsFrom(TPasClassType)) then
if Not (Assigned(Parent) and ((Parent.InheritsFrom(TPasClassType)) or Parent.InheritsFrom(TPasRecordType))) then
begin
StartSubSection(Name);
WriteLabel(ProcDecl);
@ -1174,7 +1182,7 @@ begin
List.Sort(@CompareElements);
end;
Function TLinearWriter.ShowMember(M : TPasElement) : boolean;
function TLinearWriter.ShowMember(M: TPasElement): boolean;
begin
Result:=Engine.ShowElement(M);
@ -1189,7 +1197,67 @@ begin
WriteClassDecl(TPasClassType(ASection.Classes[i]));
end;
procedure TLinearWriter.WriteClassMethodOverview(ClassDecl: TPasClassType);
procedure TLinearWriter.WriteExtendedRecords(Asection: TPasSection);
var
i,j : Integer;
Recdecl : TPasRecordType;
DocNode : TDocNode;
Member : TPasElement;
begin
if (ASection.Types.Count > 0) then
for i := 0 to ASection.Types.Count - 1 do
begin
If TPasElement(ASection.Types[i]) is TPasRecordType then
begin
Recdecl:=TPasRecordType(ASection.Types[i]);
if RecDecl.IsAdvancedRecord then
begin
StartSection(RecDecl.Name);
DescrBeginParagraph;
WriteTypeDecl(RecDecl);
StartListing(False,'');
DocNode := Engine.FindDocNode(RecDecl);
If Assigned(DocNode) and
Assigned(DocNode.Node) and
(Docnode.Node['opaque']='1') then
Writeln(RecDecl.Name+' = '+SDocOpaque)
else
begin
Writeln(EscapeText(RecDecl.GetDeclaration(True)));
end;
EndListing;
WriteLabel(RecDecl);
WriteIndex(RecDecl);
WriteDescr(RecDecl,DocNode);
If Assigned(DocNode) and Assigned(DocNode.Version) then
begin
Writeln(Format('%s : ',[SDocVersion]));
WriteDescr(RecDecl, DocNode.Version);
end;
if Assigned(DocNode) and assigned(DocNode.Notes) then
ConvertNotes(RecDecl,DocNode.Notes);
DescrEndParagraph;
WriteMethodOverView(Recdecl,Recdecl.Members);
WritePropertyOverView(Recdecl,Recdecl.Members);
for J := 0 to Recdecl.Members.Count - 1 do
begin
Member := TPasElement(Recdecl.Members[j]);
if Member.InheritsFrom(TPasProcedureBase) and Engine.ShowElement(Member) then
WriteProcedure(TPasProcedureBase(Member));
end;
for j := 0 to Recdecl.Members.Count - 1 do
begin
Member := TPasElement(Recdecl.Members[j]);
if Member.InheritsFrom(TPasProperty) and Engine.ShowElement(Member) then
WriteProperty(TPasProperty(Member));
end;
end;
end;
end;
end;
procedure TLinearWriter.WriteMethodOverview(AParent: TPasType; Members : TFPList);
var
Member : TPasElement;
@ -1202,9 +1270,9 @@ begin
List:=TStringList.Create;
Try
List.Sorted:=True;
for i := 0 to ClassDecl.Members.Count - 1 do
for i := 0 to Members.Count - 1 do
begin
Member := TPasElement(ClassDecl.Members[i]);
Member := TPasElement(Members[i]);
With Member do
if InheritsFrom(TPasProcedureBase) and ShowMember(Member) then
List.AddObject(Member.Name,Member);
@ -1212,8 +1280,8 @@ begin
If List.Count>0 then
begin
StartSubSection(SDocMethodOverview);
WriteLabel(GetLabel(ClassDecl) + ':Methods');
StartOverview(False);
WriteLabel(GetLabel(AParent) + ':Methods');
StartOverview(SDocMethod,False);
For I:=0 to List.Count-1 do
begin
Member:=TPasElement(List.Objects[i]);
@ -1243,10 +1311,31 @@ constructor TLinearWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
procedure AddList(AElement: TPasElement; AList: TFPList);
var
i: Integer;
i,j: Integer;
R : TPasRecordType;
FPEl : TPaselement;
DocNode: TDocNode;
begin
for i := 0 to AList.Count - 1 do
begin
AddLabel(TPasElement(AList[i]));
if (TObject(AList[i]) is TPasRecordType) then
begin
R:=TObject(AList[I]) as TPasRecordType;
For J:=0 to R.Members.Count-1 do
begin
FPEl:=TPasElement(R.Members[J]);
if ((FPEL is TPasProperty) or (FPEL is TPasProcedureBase))
and Engine.ShowElement(FPEl) then
begin
DocNode := Engine.FindDocNode(FPEl);
if Assigned(DocNode) then
AddLabel(FPEl);
end;
end;
end;
end;
end;
procedure AddTopicPages(AElement: TPasElement);
@ -1381,7 +1470,7 @@ begin
// do nothing
end;
function TLinearWriter.InterpretOption(const Cmd: String; const Arg: String): Boolean;
function TLinearWriter.InterpretOption(const Cmd, Arg: String): Boolean;
begin
Result := True;
if Cmd = cDupLinkedDocParam then

View File

@ -1,5 +1,5 @@
/*
$Id: fpdoc.cst,v 1.1 2005/01/02 16:22:16 michael Exp $
$Id: fpdoc.css,v 1.1 2003/03/17 23:03:20 michael Exp $
Default style sheet for FPDoc reference documentation
by Sebastian Guenther, sg@freepascal.org
@ -62,10 +62,6 @@ span.code {
span.sym {
color: darkred
}
/* No wordwrap in code fragments */
span.code {
white-space: nowrap
}
/* keywords in source fragments */
span.kw {
@ -131,30 +127,40 @@ table.bar {
background-color: #a0c0ff;
}
td p {
margin: 0;
}
span.bartitle {
font-weight: bold;
font-style: italic;
color: darkblue
}
span.toggletreeclose {
background: url(minus.png) center left no-repeat;
padding-left: 20px;
span.footer {
font-style: italic;
color: darkblue
}
span.toggletreeopen {
background: url(plus.png) center left no-repeat;
padding-left: 20px;
/* definition list */
dl {
border: 3px double #ccc;
padding: 0.5em;
}
ul.classtreelist li { padding-left: 0px; }
/* definition list: term */
dt {
float: left;
clear: left;
width: auto; /* normally browsers default width of largest item */
padding-right: 20px;
font-weight: bold;
color: darkgreen;
}
ul.classtreelist { list-style-type:none; }
/* definition list: description */
dd {
margin: 0 0 0 110px;
padding: 0 0 0.5em 0;
}
li.classtree ul { display: block; }
li.classtreeclosed ul { display: none; }
/* for browsers in standards compliance mode */
td p {
margin: 0;
}

View File

@ -1,4 +1,4 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
@ -31,8 +31,7 @@
<RunParams>
<local>
<FormatVersion Value="1"/>
<CommandLineParams Value="--package=me --output=me --input=ct.pp --format=html"/>
<LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
<CommandLineParams Value="--package=fpdoc --input=testunit.pp --output=testunit --format=html --descr=testunit.xml"/>
</local>
</RunParams>
<RequiredPackages Count="1">
@ -64,7 +63,6 @@
<Unit4>
<Filename Value="dw_ipflin.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="dw_ipflin"/>
</Unit4>
<Unit5>
<Filename Value="dw_latex.pp"/>
@ -74,7 +72,6 @@
<Unit6>
<Filename Value="dwlinear.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="dwlinear"/>
</Unit6>
<Unit7>
<Filename Value="dw_linrtf.pp"/>
@ -84,7 +81,6 @@
<Unit8>
<Filename Value="dw_man.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="dw_man"/>
</Unit8>
<Unit9>
<Filename Value="dwriter.pp"/>
@ -94,7 +90,6 @@
<Unit10>
<Filename Value="dw_txt.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="dw_txt"/>
</Unit10>
<Unit11>
<Filename Value="dw_xml.pp"/>
@ -104,22 +99,18 @@
<Unit12>
<Filename Value="fpdocproj.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="fpdocproj"/>
</Unit12>
<Unit13>
<Filename Value="fpdocxmlopts.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="fpdocxmlopts"/>
</Unit13>
<Unit14>
<Filename Value="mkfpdoc.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="mkfpdoc"/>
</Unit14>
<Unit15>
<Filename Value="fpdocclasstree.pp"/>
<IsPartOfProject Value="True"/>
<UnitName Value="fpdocclasstree"/>
</Unit15>
</Units>
</ProjectOptions>
@ -132,12 +123,6 @@
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Other>
<CompilerMessages>
<UseMsgFile Value="True"/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">

View File

@ -1,5 +1,7 @@
{$mode objfpc}
{$h+}
{$modeswitch advancedrecords}
unit testunit;
interface
@ -41,6 +43,19 @@ Type
end;
TADeprecatedType = Integer deprecated;
TMethodRecord = Record
Private
X22 : Integer;
Procedure SetX(AValue : Integer);
Function GetX : Integer;
Public
Procedure MyMethod;
Property MyX : Integer Read GetX Write SetX;
Case Integer of
1 : (X2,Y2 : Integer);
2 : (phi,Omega : Real);
end;
Var
ASimpleVar : Integer;
@ -276,4 +291,18 @@ begin
end;
Procedure TMethodRecord.SetX(AValue : Integer);
begin
end;
Function TMEthodRecord.GetX : Integer;
begin
end;
Procedure TMEthodRecord.MyMethod;
begin
end;
end.

View File

@ -9,8 +9,9 @@
-->
<module name="testunit">
<short></short>
<short>This cannot be</short>
<descr>
We have here a description
</descr>
<notes>
<note>Unit note</note>
@ -18,7 +19,7 @@
<!-- constant Visibility: default -->
<element name="AnIntegerConst">
<short></short>
<short>Aha this is not me</short>
<descr>
</descr>
<version>
@ -206,7 +207,7 @@ Appears in 2.0
<!-- record type Visibility: default -->
<element name="TAVariantRecordType">
<short></short>
<short>Some record with variants</short>
<descr>
</descr>
<seealso>
@ -215,7 +216,7 @@ Appears in 2.0
<!-- variable Visibility: default -->
<element name="TAVariantRecordType.A">
<short></short>
<short>A short description for A </short>
<descr>
</descr>
<seealso>
@ -224,7 +225,7 @@ Appears in 2.0
<!-- variable Visibility: default -->
<element name="TAVariantRecordType.X">
<short></short>
<short>A short description for X</short>
<descr>
</descr>
<seealso>
@ -233,7 +234,53 @@ Appears in 2.0
<!-- variable Visibility: default -->
<element name="TAVariantRecordType.Y">
<short></short>
<short>A short description for Y</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<!-- record type Visibility: default -->
<element name="TMethodRecord">
<short>Some record with variants</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TMethodRecord.MyMethod">
<short>A short description for MyMethod</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TMethodRecord.A">
<short>A short description for A </short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TMethodRecord.X">
<short>A short description for X</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<!-- variable Visibility: default -->
<element name="TMethodRecord.Y">
<short>A short description for Y</short>
<descr>
</descr>
<seealso>