* Added support for conditional notes

git-svn-id: trunk@20335 -
This commit is contained in:
michael 2012-02-13 13:45:37 +00:00
parent 34f0538248
commit 93d173e38e
2 changed files with 21 additions and 3 deletions

View File

@ -64,7 +64,8 @@ type
end;
TWriterLogEvent = Procedure(Sender : TObject; Const Msg : String) of object;
TWriterNoteEvent = Procedure(Sender : TObject; Note : TDomElement; Var EmitNote : Boolean) of object;
{ TFPDocWriter }
TFPDocWriter = class
@ -74,6 +75,7 @@ type
FPackage : TPasPackage;
FTopics : TList;
FImgExt : String;
FBeforeEmitNote : TWriterNoteEvent;
procedure ConvertURL(AContext: TPasElement; El: TDOMElement);
protected
@ -175,6 +177,7 @@ type
Function ShowMember(M : TPasElement) : boolean;
Procedure GetMethodList(ClassDecl: TPasClassType; List : TStringList);
Property EmitNotes : Boolean Read FEmitNotes Write FEmitNotes;
Property BeforeEmitNote : TWriterNoteEvent Read FBeforeEmitNote Write FBeforeEmitNote;
end;
TFPDocWriterClass = Class of TFPDocWriter;
@ -495,6 +498,7 @@ Var
L : TFPList;
N : TDomNode;
I : Integer;
B : Boolean;
begin
Result:=Assigned(El) and EmitNotes;
@ -506,7 +510,13 @@ begin
While Assigned(N) do
begin
If (N.NodeType=ELEMENT_NODE) and (N.NodeName='note') then
L.Add(N);
begin
B:=True;
if Assigned(FBeforeEmitNote) then
FBeforeEmitNote(Self,TDomElement(N),B);
If B then
L.Add(N);
end;
N:=N.NextSibling;
end;
Result:=L.Count>0;

View File

@ -5,7 +5,7 @@ unit mkfpdoc;
interface
uses
Classes, SysUtils, dglobals, fpdocxmlopts, dwriter, pscanner, pparser, fpdocproj;
Classes, SysUtils, dglobals, DOM, fpdocxmlopts, dwriter, pscanner, pparser, fpdocproj;
const
DefOSTarget = {$I %FPCTARGETOS%};
@ -29,6 +29,7 @@ Type
function GetOptions: TEngineOptions;
function GetPackages: TFPDocPackages;
Protected
Procedure DoBeforeEmitNote(Sender : TObject; Note : TDomElement; Var EmitNote : Boolean); virtual;
procedure HandleOnParseUnit(Sender: TObject; const AUnitName: String; out AInputFile, OSTarget, CPUTarget: String);
procedure SetVerbose(AValue: Boolean); virtual;
Procedure DoLog(Const Msg : String);
@ -122,6 +123,12 @@ begin
Result:=FProject.Packages;
end;
procedure TFPDocCreator.DoBeforeEmitNote(Sender: TObject; Note: TDomElement;
var EmitNote: Boolean);
begin
EmitNote:=True;
end;
constructor TFPDocCreator.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
@ -155,6 +162,7 @@ begin
If FVerbose then
DoLog('Writing documentation');
OnLog:=Self.OnLog;
BeforeEmitNote:=@self.DoBeforeEmitNote;
EmitNotes:=Options.EmitNotes;
If Options.BackendOptions.Count>0 then
for I:=0 to ((Options.BackendOptions.Count-1) div 2) do