Browse Source

* Added support for conditional notes

git-svn-id: trunk@20335 -
michael 13 years ago
parent
commit
93d173e38e
2 changed files with 21 additions and 3 deletions
  1. 12 2
      utils/fpdoc/dwriter.pp
  2. 9 1
      utils/fpdoc/mkfpdoc.pp

+ 12 - 2
utils/fpdoc/dwriter.pp

@@ -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;

+ 9 - 1
utils/fpdoc/mkfpdoc.pp

@@ -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:[email protected];
       EmitNotes:=Options.EmitNotes;
       If Options.BackendOptions.Count>0 then
         for I:=0 to ((Options.BackendOptions.Count-1) div 2) do