瀏覽代碼

* Support for link attribute to description element

git-svn-id: trunk@11115 -
michael 17 年之前
父節點
當前提交
87836f4c5b
共有 1 個文件被更改,包括 22 次插入4 次删除
  1. 22 4
      utils/fpdoc/dw_html.pp

+ 22 - 4
utils/fpdoc/dw_html.pp

@@ -108,6 +108,7 @@ type
     FIDF : Boolean;
     FIDF : Boolean;
     FDateFormat: String;
     FDateFormat: String;
     function ResolveLinkID(const Name: String): DOMString;
     function ResolveLinkID(const Name: String): DOMString;
+    function ResolveLinkIDInUnit(const Name,UnitName: String): DOMString;
     function ResolveLinkWithinPackage(AElement: TPasElement;
     function ResolveLinkWithinPackage(AElement: TPasElement;
       ASubpageIndex: Integer): String;
       ASubpageIndex: Integer): String;
 
 
@@ -488,6 +489,7 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
     ClassEl: TPasClassType;
     ClassEl: TPasClassType;
     FPEl, AncestorMemberEl: TPasElement;
     FPEl, AncestorMemberEl: TPasElement;
     DocNode: TDocNode;
     DocNode: TDocNode;
+    ALink : DOMString;
     DidAutolink: Boolean;
     DidAutolink: Boolean;
   begin
   begin
     AddPage(AModule, 0);
     AddPage(AModule, 0);
@@ -527,7 +529,14 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
               continue;
               continue;
 
 
             DocNode := Engine.FindDocNode(FPEl);
             DocNode := Engine.FindDocNode(FPEl);
-            if not Assigned(DocNode) then
+            if Assigned(DocNode) then
+            begin
+              ALink:=DocNode.Node['link'];
+              If (ALink<>'') then
+                Engine.AddLink(FPEl.PathName,ResolveLinkIDInUnit(ALink,AModule.name))
+              else
+                AddPage(FPEl, 0);
+            end else  
             begin
             begin
               DidAutolink := False;
               DidAutolink := False;
               if Assigned(ClassEl.AncestorType) and
               if Assigned(ClassEl.AncestorType) and
@@ -552,8 +561,7 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
               end;
               end;
               if not DidAutolink then
               if not DidAutolink then
                 AddPage(FPEl, 0);
                 AddPage(FPEl, 0);
-            end else
-              AddPage(FPEl, 0);
+            end;
           end;
           end;
         end;
         end;
       end;
       end;
@@ -738,6 +746,14 @@ end;
   - AppendHyperlink (for unresolved parse tree element links)
   - AppendHyperlink (for unresolved parse tree element links)
 }
 }
 
 
+function THTMLWriter.ResolveLinkIDInUnit(const Name,UnitName: String): DOMString;
+
+begin
+  Result:=ResolveLinkID(Name);
+  If (Result='') and (UnitName<>'')  then
+    Result:=ResolveLinkID(UnitName+'.'+Name);
+end;
+
 function THTMLWriter.ResolveLinkID(const Name: String): DOMString;
 function THTMLWriter.ResolveLinkID(const Name: String): DOMString;
 var
 var
   i: Integer;
   i: Integer;
@@ -762,8 +778,10 @@ begin
       if Length(Result) = 0 then
       if Length(Result) = 0 then
       begin
       begin
         if Assigned(Module) then
         if Assigned(Module) then
+          begin
           Result := Engine.FindAbsoluteLink(Module.PathName + '.' + Name);
           Result := Engine.FindAbsoluteLink(Module.PathName + '.' + Name);
-        // WriteLn('Searching for ', Module.PathName + '.' + Name, ' => ', Result);
+//          WriteLn('Searching for ', Module.PathName + '.' + Name, ' => ', Result);
+          end;
         if Length(Result) = 0 then
         if Length(Result) = 0 then
           for i := Length(Name) downto 1 do
           for i := Length(Name) downto 1 do
             if Name[i] = '.' then
             if Name[i] = '.' then