* 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:
michael 2013-01-21 10:57:54 +00:00
parent 01d8ec7a62
commit a472de7805

View File

@ -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;