mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-21 07:19:59 +01:00
wiki test: fixed result text
git-svn-id: trunk@35752 -
This commit is contained in:
parent
abe3e7cd8b
commit
a06225b2c3
@ -259,6 +259,8 @@ function CompareW2HPageForScore(Page1, Page2: Pointer): integer;
|
|||||||
function TextToHTMLSnipped(Txt: string; LoCaseStringsToHighlight: TStrings;
|
function TextToHTMLSnipped(Txt: string; LoCaseStringsToHighlight: TStrings;
|
||||||
MaxUTF8Length: integer): string;
|
MaxUTF8Length: integer): string;
|
||||||
|
|
||||||
|
function dbgs(t: TWHTextNodeType): string; overload;
|
||||||
|
|
||||||
procedure Test_TextToHTMLSnipped;
|
procedure Test_TextToHTMLSnipped;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -448,6 +450,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function dbgs(t: TWHTextNodeType): string;
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
writestr(Result,t);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure Test_TextToHTMLSnipped;
|
procedure Test_TextToHTMLSnipped;
|
||||||
|
|
||||||
procedure t(Txt, LoCaseHighlights: string; MaxUTF8Length: integer; Expected: string);
|
procedure t(Txt, LoCaseHighlights: string; MaxUTF8Length: integer; Expected: string);
|
||||||
@ -1350,8 +1358,8 @@ begin
|
|||||||
Page:=TW2HelpPage(FoundPages[i]);
|
Page:=TW2HelpPage(FoundPages[i]);
|
||||||
Node:=Page.GetNodeHighestScore(Query,Scoring);
|
Node:=Page.GetNodeHighestScore(Query,Scoring);
|
||||||
s:='<div class="wikiSearchResultItem">'+FoundNodeToHTMLSnippet(Page,Node,Query)+'</div>'+LineEnding;
|
s:='<div class="wikiSearchResultItem">'+FoundNodeToHTMLSnippet(Page,Node,Query)+'</div>'+LineEnding;
|
||||||
HTML+=s;
|
|
||||||
//debugln(['TWikiHelp.TestSearch Score=',Page.Score,' HTML="',s,'"']);
|
//debugln(['TWikiHelp.TestSearch Score=',Page.Score,' HTML="',s,'"']);
|
||||||
|
HTML+=s;
|
||||||
end;
|
end;
|
||||||
HTML+='</body>'+LineEnding
|
HTML+='</body>'+LineEnding
|
||||||
+'</html>'+LineEnding;
|
+'</html>'+LineEnding;
|
||||||
@ -1381,10 +1389,23 @@ begin
|
|||||||
+' alt="'+StrToXMLValue(aPage.WikiPage.Title)+'"'
|
+' alt="'+StrToXMLValue(aPage.WikiPage.Title)+'"'
|
||||||
+'>'
|
+'>'
|
||||||
+TextToHTMLSnipped(aPage.WikiPage.Title,aQuery.LoPhrases,200)+'</a><br>'+LineEnding;
|
+TextToHTMLSnipped(aPage.WikiPage.Title,aQuery.LoPhrases,200)+'</a><br>'+LineEnding;
|
||||||
|
if aNode=nil then begin
|
||||||
|
// get the first node with some text
|
||||||
|
aNode:=aPage.TextRoot;
|
||||||
|
while (aNode<>nil) and (UTF8Trim(aNode.Txt)='') do
|
||||||
|
aNode:=aNode.Next;
|
||||||
|
end;
|
||||||
if aNode<>nil then begin
|
if aNode<>nil then begin
|
||||||
|
//debugln(['TWikiHelp.FoundNodeToHTMLSnippet ',dbgs(aNode.Typ),' Txt="'+dbgstr(ANode.Txt)+'"']);
|
||||||
HeaderNode:=aNode;
|
HeaderNode:=aNode;
|
||||||
while (HeaderNode<>nil) and (HeaderNode.Typ<>whnLink) do
|
while (HeaderNode<>nil) and (HeaderNode.Typ<>whnHeader) do
|
||||||
HeaderNode:=HeaderNode.Previous;
|
HeaderNode:=HeaderNode.Previous;
|
||||||
|
if aNode=HeaderNode then begin
|
||||||
|
// get the first node after the header with some text
|
||||||
|
repeat
|
||||||
|
aNode:=aNode.Next;
|
||||||
|
until (aNode=nil) or (UTF8Trim(aNode.Txt)<>'');
|
||||||
|
end;
|
||||||
if HeaderNode<>nil then begin
|
if HeaderNode<>nil then begin
|
||||||
// add a direct link to the sub topic
|
// add a direct link to the sub topic
|
||||||
Result+='Topic <a href="'+StrToXMLValue(aPage.WikiDocumentName+'#'+WikiHeaderToLink(HeaderNode.Txt))+'"'
|
Result+='Topic <a href="'+StrToXMLValue(aPage.WikiDocumentName+'#'+WikiHeaderToLink(HeaderNode.Txt))+'"'
|
||||||
@ -1393,7 +1414,7 @@ begin
|
|||||||
+'>'
|
+'>'
|
||||||
+TextToHTMLSnipped(HeaderNode.Txt,aQuery.LoPhrases,200)+'</a>: ';
|
+TextToHTMLSnipped(HeaderNode.Txt,aQuery.LoPhrases,200)+'</a>: ';
|
||||||
end;
|
end;
|
||||||
if HeaderNode<>aNode then begin
|
if aNode<>nil then begin
|
||||||
// add text
|
// add text
|
||||||
Result+=TextToHTMLSnipped(aNode.Txt,aQuery.LoPhrases,200);
|
Result+=TextToHTMLSnipped(aNode.Txt,aQuery.LoPhrases,200);
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -33,9 +33,7 @@ type
|
|||||||
SearchLabel: TLabel;
|
SearchLabel: TLabel;
|
||||||
Splitter1: TSplitter;
|
Splitter1: TSplitter;
|
||||||
Timer1: TTimer;
|
Timer1: TTimer;
|
||||||
function DataProviderCanHandle(Sender: TObject; const URL: string): Boolean;
|
function DataProviderCanHandle(Sender: TObject; const {%H-}URL: string): Boolean;
|
||||||
procedure DataProviderCheckURL(Sender: TObject; const URL: string;
|
|
||||||
var Available: Boolean; var ContentType: string);
|
|
||||||
procedure DataProviderGetImage(Sender: TIpHtmlNode; const URL: string;
|
procedure DataProviderGetImage(Sender: TIpHtmlNode; const URL: string;
|
||||||
var Picture: TPicture);
|
var Picture: TPicture);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
@ -105,7 +103,6 @@ begin
|
|||||||
PageIpHtmlPanel.DataProvider:=FURLDataProvider;
|
PageIpHtmlPanel.DataProvider:=FURLDataProvider;
|
||||||
FURLDataProvider.OnCanHandle:=@DataProviderCanHandle;
|
FURLDataProvider.OnCanHandle:=@DataProviderCanHandle;
|
||||||
FURLDataProvider.OnGetImage:=@DataProviderGetImage;
|
FURLDataProvider.OnGetImage:=@DataProviderGetImage;
|
||||||
FURLDataProvider.OnCheckURL:=@DataProviderCheckURL;
|
|
||||||
|
|
||||||
WikiHelp:=TWikiHelp.Create(nil);
|
WikiHelp:=TWikiHelp.Create(nil);
|
||||||
WikiHelp.XMLDirectory:=SetDirSeparators('../wikixml');
|
WikiHelp.XMLDirectory:=SetDirSeparators('../wikixml');
|
||||||
@ -134,14 +131,6 @@ begin
|
|||||||
Result:=false;
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.DataProviderCheckURL(Sender: TObject;
|
|
||||||
const URL: string; var Available: Boolean; var ContentType: string);
|
|
||||||
begin
|
|
||||||
debugln(['TWikiSearchDemoForm.DataProviderCheckURL URL=',URL]);
|
|
||||||
Available:=false;
|
|
||||||
ContentType:='';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.DataProviderGetImage(Sender: TIpHtmlNode;
|
procedure TWikiSearchDemoForm.DataProviderGetImage(Sender: TIpHtmlNode;
|
||||||
const URL: string; var Picture: TPicture);
|
const URL: string; var Picture: TPicture);
|
||||||
var
|
var
|
||||||
@ -195,6 +184,8 @@ var
|
|||||||
Panel: TIpHtmlPanel;
|
Panel: TIpHtmlPanel;
|
||||||
ms: TMemoryStream;
|
ms: TMemoryStream;
|
||||||
Src: String;
|
Src: String;
|
||||||
|
DocumentName: String;
|
||||||
|
p: SizeInt;
|
||||||
begin
|
begin
|
||||||
Panel:=Sender as TIpHtmlPanel;
|
Panel:=Sender as TIpHtmlPanel;
|
||||||
HotNode:=Panel.HotNode;
|
HotNode:=Panel.HotNode;
|
||||||
@ -210,7 +201,13 @@ begin
|
|||||||
ms:=TMemoryStream.Create;
|
ms:=TMemoryStream.Create;
|
||||||
try
|
try
|
||||||
try
|
try
|
||||||
WikiHelp.SavePageToStream(href,ms);
|
DocumentName:=HRef;
|
||||||
|
p:=Pos('#',DocumentName);
|
||||||
|
if p>0 then begin
|
||||||
|
DocumentName:=LeftStr(DocumentName,p-1);
|
||||||
|
// ToDo: anchor
|
||||||
|
end;
|
||||||
|
WikiHelp.SavePageToStream(DocumentName,ms);
|
||||||
ms.Position:=0;
|
ms.Position:=0;
|
||||||
LoadHTML(PageIpHtmlPanel,ms);
|
LoadHTML(PageIpHtmlPanel,ms);
|
||||||
except
|
except
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user