diff --git a/utils/fpdoc/dw_html.pp b/utils/fpdoc/dw_html.pp index 97b6e5b99c..00d623dde3 100644 --- a/utils/fpdoc/dw_html.pp +++ b/utils/fpdoc/dw_html.pp @@ -123,7 +123,7 @@ type Procedure CreateAllocator; virtual; procedure CreateCSSFile; virtual; - function ResolveLinkID(const Name: String): DOMString; + function ResolveLinkID(const Name: String; Level : Integer = 0): DOMString; function ResolveLinkIDInUnit(const Name,AUnitName: String): DOMString; function ResolveLinkWithinPackage(AElement: TPasElement; ASubpageIndex: Integer): String; @@ -917,46 +917,13 @@ begin Result:=ResolveLinkID(AUnitName+'.'+Name); end; -function THTMLWriter.ResolveLinkID(const Name: String): DOMString; +function THTMLWriter.ResolveLinkID(const Name: String; Level : Integer = 0): DOMString; + var i: Integer; ThisPackage: TLinkNode; begin - if Length(Name) = 0 then - begin - SetLength(Result, 0); - exit; - end; - - if Name[1] = '#' then - Result := Engine.FindAbsoluteLink(Name) - else - begin - SetLength(Result, 0); - { Try all packages } - ThisPackage := Engine.RootLinkNode.FirstChild; - while Assigned(ThisPackage) do - begin - Result := Engine.FindAbsoluteLink(ThisPackage.Name + '.' + Name); - if Length(Result) = 0 then - begin - if Assigned(Module) then - begin - Result := Engine.FindAbsoluteLink(Module.PathName + '.' + Name); -// WriteLn('Searching for ', Module.PathName + '.' + Name, ' => ', Result); - end; - if Length(Result) = 0 then - for i := Length(Name) downto 1 do - if Name[i] = '.' then - begin - Result := ResolveLinkID(Copy(Name, 1, i - 1)); - exit; - end; - end; - ThisPackage := ThisPackage.NextSibling; - end; - end; - + Result:=Engine.ResolveLink(Module,Name, False); if Length(Result) > 0 then if Copy(Result, 1, Length(CurDirectory) + 1) = CurDirectory + '/' then Result := Copy(Result, Length(CurDirectory) + 2, Length(Result)) @@ -1192,7 +1159,7 @@ end; procedure THTMLWriter.DescrBeginLink(const AId: DOMString); var - a,s: String; + a,s,n : String; begin a:=AId; s := ResolveLinkID(a); @@ -1203,7 +1170,11 @@ begin else s:='?'; if a='' then a:=''; - DoLog(SErrUnknownLinkID, [s,a]); + if Assigned(CurrentContext) then + N:=CurrentContext.Name + else + N:='?'; + DoLog(SErrUnknownLinkID, [s,n,a]); PushOutputNode(CreateEl(CurOutputNode, 'b')); end else PushOutputNode(CreateLink(CurOutputNode, s)); @@ -2146,7 +2117,7 @@ Procedure THTMLWriter.AppendSeeAlsoSection(AElement : TPasElement;DocNode : TDoc var Node: TDOMNode; TableEl, El, TREl, TDEl, ParaEl, NewEl, DescrEl: TDOMElement; - l,s: String; + l,s,n: String; f: Text; IsFirstSeeAlso : Boolean; @@ -2177,7 +2148,11 @@ begin else s:='?'; if l='' then l:=''; - DoLog(SErrUnknownLinkID, [s,l]); + if Assigned(AElement) then + N:=AElement.Name + else + N:='?'; + DoLog(SErrUnknownLinkID, [s,N,l]); NewEl := CreateEl(ParaEl,'b') end else @@ -3167,6 +3142,7 @@ var CurVisibility: TPasMemberVisibility; i: Integer; s: String; + t : TPasType; ah,ol,wt,ct,wc,cc : boolean; ThisInterface, ThisClass: TPasClassType; @@ -3285,13 +3261,6 @@ var AppendSym(CodeEl, ' = '); AppendText(CodeEl,TPasConst(Member).Expr.GetDeclaration(True)); end - else if (Member is TPasVariable) then - begin - AppendHyperlink(CodeEl, Member); - AppendSym(CodeEl, ': '); - AppendHyperlink(CodeEl, TPasVariable(Member).VarType); - AppendSym(CodeEl, ';'); - end else if (Member is TPasType) then begin AppendHyperlink(CodeEl, Member); @@ -3302,10 +3271,11 @@ var begin AppendKw(CodeEl, 'property '); AppendHyperlink(CodeEl, Member); - if Assigned(TPasProperty(Member).VarType) then + t:=TPasProperty(Member).ResolvedType; + if Assigned(T) then begin AppendSym(CodeEl, ': '); - AppendHyperlink(CodeEl, TPasProperty(Member).VarType); + AppendHyperlink(CodeEl, T); end; AppendSym(CodeEl, ';'); if TPasProperty(Member).IsDefault then @@ -3329,6 +3299,13 @@ var if Length(s) > 0 then AppendText(CodeEl, ' [' + s + ']'); end + else if (Member is TPasVariable) then + begin + AppendHyperlink(CodeEl, Member); + AppendSym(CodeEl, ': '); + AppendHyperlink(CodeEl, TPasVariable(Member).VarType); + AppendSym(CodeEl, ';'); + end else AppendText(CreateWarning(CodeEl), '<' + Member.ClassName + '>'); end; @@ -3602,15 +3579,18 @@ var procedure CreatePropertyPage(Element: TPasProperty); var NeedBreak: Boolean; + T : TPasType; + begin AppendKw(CodeEl, 'property '); AppendHyperlink(CodeEl, Element.Parent); AppendSym(CodeEl, '.'); AppendText(CodeEl, Element.Name); - if Assigned(Element.VarType) then + T:=Element.ResolvedType; + if Assigned(T) then begin AppendSym(CodeEl, ' : '); - AppendType(CodeEl, TableEl, Element.VarType, False); + AppendType(CodeEl, TableEl, T, False); end; NeedBreak := False;