diff --git a/utils/fpdoc/fpdocxmlopts.pas b/utils/fpdoc/fpdocxmlopts.pas index d92f8a0cd4..3a923d315e 100644 --- a/utils/fpdoc/fpdocxmlopts.pas +++ b/utils/fpdoc/fpdocxmlopts.pas @@ -20,6 +20,7 @@ Type Procedure LoadEngineOptions(Options : TEngineOptions; E : TDOMElement); virtual; Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual; procedure SaveDescription(const ADescription: String; XML: TXMLDocument; AParent: TDOMElement); virtual; + procedure SaveImportFile(const AImportFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual; procedure SaveInputFile(const AInputFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual; Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual; Public @@ -49,6 +50,8 @@ Resourcestring SErrNoPackagesNode = 'No "packages" node found in docproject'; SErrNoInputFile = 'unit tag without file attribute found'; SErrNoDescrFile = 'description tag without file attribute'; + SErrNoImportFile = 'Import tag without file attribute'; + SErrNoImportPrefix = 'Import tag without prefix attribute'; { TXMLFPDocOptions } @@ -98,6 +101,20 @@ procedure TXMLFPDocOptions.LoadPackage(APackage: TFPDocPackage; E: TDOMElement); Error(SErrNoDescrFile); end; + Function LoadImport(I : TDOMElement) : String; + + Var + S : String; + begin + Result:=I['file']; + If (Result='') then + Error(SErrNoImportFile); + S:=I['prefix']; + If (S='') then + Error(SErrNoImportPrefix); + Result:=Result+','+S; + end; + Var N,S : TDOMNode; O : TDomElement; @@ -132,6 +149,16 @@ begin S:=S.NextSibling; end; end + else If (O.NodeName='imports') then + begin + S:=O.FirstChild; + While (S<>Nil) do + begin + If (S.NodeType=Element_Node) and (S.NodeName='import') then + APackage.Imports.add(LoadImport(S as TDomElement)); + S:=S.NextSibling; + end; + end end; N:=N.NextSibling; end; @@ -313,6 +340,18 @@ begin AParent['file']:=ADescription; end; +procedure TXMLFPDocOptions.SaveImportFile(const AImportFile: String; + XML: TXMLDocument; AParent: TDOMElement); + +Var + I : integer; + +begin + I:=Pos(',',AImportFile); + AParent['file']:=Copy(AImportFile,1,I-1); + AParent['prefix']:=Copy(AImportFile,i+1,Length(AImportFile)); +end; + Procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage; XML : TXMLDocument; AParent: TDOMElement); @@ -342,6 +381,15 @@ begin PE.AppendChild(E); SaveDescription(APackage.Descriptions[i],XML,E); end; + // Imports + PE:=XML.CreateElement('imports'); + AParent.AppendChild(PE); + for i:=0 to APackage.Imports.Count-1 do + begin + E:=XML.CreateElement('import'); + PE.AppendChild(E); + SaveImportFile(APackage.Imports[i],XML,E); + end; end; diff --git a/utils/fpdoc/mgrfpdocproj.pp b/utils/fpdoc/mgrfpdocproj.pp index 49949634d6..f977888cdb 100644 --- a/utils/fpdoc/mgrfpdocproj.pp +++ b/utils/fpdoc/mgrfpdocproj.pp @@ -28,6 +28,7 @@ Type procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean); procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean); procedure AddInputFile(Const AFile : String; AOptions : String = ''); + procedure AddImportFile(Const AFile,APrefix : String); procedure AddDescrFile(Const AFile : String); procedure RemoveInputFile(Const AFile : String); procedure RemoveDescrFile(Const AFile : String); @@ -192,6 +193,13 @@ begin FPackage.Inputs.Add(S); end; +procedure TFPDocProjectManager.AddImportFile(const AFile, APrefix: String); + +begin + CheckPackage; + FPackage.Imports.Add(AFile+','+APrefix); +end; + procedure TFPDocProjectManager.AddDescrFile(const AFile: String); begin diff --git a/utils/fpdoc/mkfpdocproj.pp b/utils/fpdoc/mkfpdocproj.pp index 7277c5795a..a46557a6e7 100644 --- a/utils/fpdoc/mkfpdocproj.pp +++ b/utils/fpdoc/mkfpdocproj.pp @@ -22,6 +22,7 @@ type procedure AddDescriptionDirs; procedure AddInputDirs; procedure AddInputFiles; + procedure AddImportFiles; function CmdNeedsPackage: Boolean; procedure RemoveInputFiles; procedure RemoveDescrFiles; @@ -251,6 +252,23 @@ begin FMGr.AddInputFile(FCmdArgs[i],Options); end; +procedure TManageFPDocProjectApplication.AddImportFiles; + +Var + I,J : Integer; + F,P : String; + +begin + For I:=0 to FCmdArgs.Count-1 do + begin + P:=FCmdArgs[i]; + J:=Pos(',',P); + F:=Copy(P,1,J-1); + Delete(P,1,J); + FMGr.AddImportFile(F,P); + end; +end; + procedure TManageFPDocProjectApplication.RemoveInputFiles; Var @@ -329,6 +347,8 @@ begin AddInputDirs else if (FCmd='add-input-files') then AddInputFiles + else if (FCmd='add-import-files') then + AddImportFiles else if (FCmd='add-description-files') then AddDescrFiles else if (FCmd='remove-input-files') then