Pārlūkot izejas kodu

* Save/load package imports to/from package description file

git-svn-id: trunk@19761 -
michael 13 gadi atpakaļ
vecāks
revīzija
8d8a1a23e9

+ 48 - 0
utils/fpdoc/fpdocxmlopts.pas

@@ -20,6 +20,7 @@ Type
     Procedure LoadEngineOptions(Options : TEngineOptions; E : TDOMElement); virtual;
     Procedure LoadEngineOptions(Options : TEngineOptions; E : TDOMElement); virtual;
     Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual;
     Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual;
     procedure SaveDescription(const ADescription: String; 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 SaveInputFile(const AInputFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual;
     Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
     Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
   Public
   Public
@@ -49,6 +50,8 @@ Resourcestring
   SErrNoPackagesNode = 'No "packages" node found in docproject';
   SErrNoPackagesNode = 'No "packages" node found in docproject';
   SErrNoInputFile = 'unit tag without file attribute found';
   SErrNoInputFile = 'unit tag without file attribute found';
   SErrNoDescrFile = 'description tag without file attribute';
   SErrNoDescrFile = 'description tag without file attribute';
+  SErrNoImportFile = 'Import tag without file attribute';
+  SErrNoImportPrefix = 'Import tag without prefix attribute';
 
 
 { TXMLFPDocOptions }
 { TXMLFPDocOptions }
 
 
@@ -98,6 +101,20 @@ procedure TXMLFPDocOptions.LoadPackage(APackage: TFPDocPackage; E: TDOMElement);
       Error(SErrNoDescrFile);
       Error(SErrNoDescrFile);
   end;
   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
 Var
   N,S : TDOMNode;
   N,S : TDOMNode;
   O : TDomElement;
   O : TDomElement;
@@ -132,6 +149,16 @@ begin
           S:=S.NextSibling;
           S:=S.NextSibling;
           end;
           end;
         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;
       end;
     N:=N.NextSibling;
     N:=N.NextSibling;
     end;
     end;
@@ -313,6 +340,18 @@ begin
   AParent['file']:=ADescription;
   AParent['file']:=ADescription;
 end;
 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);
 Procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage; XML : TXMLDocument; AParent: TDOMElement);
 
 
 
 
@@ -342,6 +381,15 @@ begin
     PE.AppendChild(E);
     PE.AppendChild(E);
     SaveDescription(APackage.Descriptions[i],XML,E);
     SaveDescription(APackage.Descriptions[i],XML,E);
     end;
     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;
 end;
 
 
 
 

+ 8 - 0
utils/fpdoc/mgrfpdocproj.pp

@@ -28,6 +28,7 @@ Type
     procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean);
     procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean);
     procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean);
     procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean);
     procedure AddInputFile(Const AFile : String; AOptions : String = '');
     procedure AddInputFile(Const AFile : String; AOptions : String = '');
+    procedure AddImportFile(Const AFile,APrefix : String);
     procedure AddDescrFile(Const AFile : String);
     procedure AddDescrFile(Const AFile : String);
     procedure RemoveInputFile(Const AFile : String);
     procedure RemoveInputFile(Const AFile : String);
     procedure RemoveDescrFile(Const AFile : String);
     procedure RemoveDescrFile(Const AFile : String);
@@ -192,6 +193,13 @@ begin
   FPackage.Inputs.Add(S);
   FPackage.Inputs.Add(S);
 end;
 end;
 
 
+procedure TFPDocProjectManager.AddImportFile(const AFile, APrefix: String);
+
+begin
+  CheckPackage;
+  FPackage.Imports.Add(AFile+','+APrefix);
+end;
+
 procedure TFPDocProjectManager.AddDescrFile(const AFile: String);
 procedure TFPDocProjectManager.AddDescrFile(const AFile: String);
 
 
 begin
 begin

+ 20 - 0
utils/fpdoc/mkfpdocproj.pp

@@ -22,6 +22,7 @@ type
     procedure AddDescriptionDirs;
     procedure AddDescriptionDirs;
     procedure AddInputDirs;
     procedure AddInputDirs;
     procedure AddInputFiles;
     procedure AddInputFiles;
+    procedure AddImportFiles;
     function CmdNeedsPackage: Boolean;
     function CmdNeedsPackage: Boolean;
     procedure RemoveInputFiles;
     procedure RemoveInputFiles;
     procedure RemoveDescrFiles;
     procedure RemoveDescrFiles;
@@ -251,6 +252,23 @@ begin
     FMGr.AddInputFile(FCmdArgs[i],Options);
     FMGr.AddInputFile(FCmdArgs[i],Options);
 end;
 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;
 procedure TManageFPDocProjectApplication.RemoveInputFiles;
 
 
 Var
 Var
@@ -329,6 +347,8 @@ begin
     AddInputDirs
     AddInputDirs
   else if (FCmd='add-input-files') then
   else if (FCmd='add-input-files') then
     AddInputFiles
     AddInputFiles
+  else if (FCmd='add-import-files') then
+    AddImportFiles
   else if (FCmd='add-description-files') then
   else if (FCmd='add-description-files') then
     AddDescrFiles
     AddDescrFiles
   else if (FCmd='remove-input-files') then
   else if (FCmd='remove-input-files') then