File: parsewikipage.lpr

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (56 lines) | stat: -rw-r--r-- 1,083 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
program parsewikipage;

{$mode objfpc}{$H+}

uses
  Classes, sysutils, WikiParser;

type

  { TWikiParse }

  TWikiParse = class
    procedure OnToken(Token: TWPToken);
  public
    procedure Parse(Filename: string);
  end;

{ TWikiParse }

procedure TWikiParse.OnToken(Token: TWPToken);
var
  TextToken: TWPTextToken;
begin
  exit;
  write('TWikiParse.OnToken ',dbgs(Token.Token));
  if Token is TWPTextToken then begin
    TextToken:=TWPTextToken(Token);
    write(': "',copy(TextToken.Page.Src,TextToken.StartPos,TextToken.EndPos-TextToken.StartPos),'"');
  end;
  writeln;
end;

procedure TWikiParse.Parse(Filename: string);
var
  Page: TWikiPage;
begin
  Page:=TWikiPage.Create;
  try
    Page.LoadFromFile(Filename);
    writeln(ExtractFileName(Filename),' ID="',Page.ID,'" Title="',Page.Title,'" Revision="',Page.Revision,'" timestamp="',Page.TimeStamp,'"');
    Page.Parse(@OnToken);
  finally
    Page.Free;
  end;
end;

var
  i: Integer;
  Parser: TWikiParse;
begin
  Parser:=TWikiParse.Create;
  for i:=1 to Paramcount do begin
    Parser.Parse(ParamStr(i));
  end;
end.