mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-10 00:07:23 +01:00
* use global resolveID (better result)
* Better link info in case of error * Resolve property type to ancestors. git-svn-id: trunk@23473 -
This commit is contained in:
parent
01d8ec7a62
commit
a472de7805
@ -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:='<empty>';
|
||||
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:='<empty>';
|
||||
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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user