mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-24 01:59:14 +02:00
+ Initial implementation
This commit is contained in:
parent
b278789372
commit
5b91fa5d57
370
fcl/xml/htmldoc.pp
Normal file
370
fcl/xml/htmldoc.pp
Normal file
@ -0,0 +1,370 @@
|
||||
{
|
||||
$Id$
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 1998 by Michael Van Canneyt, member of
|
||||
the Free Pascal development team
|
||||
|
||||
Implementation of a HTMLdocument class,
|
||||
following the W3 recommendation.
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
unit htmldoc;
|
||||
|
||||
interface
|
||||
|
||||
Uses Sysutils, // Uppercase
|
||||
Classes, // TList and the like
|
||||
DOM; // Naturally...
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Forward Class definitions
|
||||
---------------------------------------------------------------------}
|
||||
Type
|
||||
|
||||
THTMLCollection = Class;
|
||||
THTMLDocument = Class;
|
||||
THTMLElement = Class;
|
||||
THTMLHtmlElement = Class;
|
||||
THTMLHeadElement = Class;
|
||||
THTMLLinkElement = Class;
|
||||
THTMLTitleElement = Class;
|
||||
THTMLMetaElement = Class;
|
||||
THTMLBaseElement = Class;
|
||||
THTMLIsIndexElement = Class;
|
||||
THTMLStyleElement = Class;
|
||||
THTMLBodyElement = Class;
|
||||
THTMLFormElement = Class;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Miscellaneous objects
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
// HTMLCollection
|
||||
THTMLCollection = Class
|
||||
Private
|
||||
Flist : TList;
|
||||
Function GetLength : longword;
|
||||
Public
|
||||
Constructor Create;
|
||||
Destructor Destroy; Override;
|
||||
Function Item(Index : longword) : TDOMNode;
|
||||
Function NamedItem(Name : DomString) : TDOMNode;
|
||||
Property Length : LongWord Read GetLength;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
THTMLDocument class
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
THTMLDocument = Class(TDOMDocument)
|
||||
Private
|
||||
FTitle,
|
||||
FReferrer,
|
||||
FDomain,
|
||||
FCookie,
|
||||
FURL : DOMString;
|
||||
FBody : THTMLElement;
|
||||
FImages,
|
||||
FApplets,
|
||||
FLinks,
|
||||
FForms,
|
||||
Fanchors : THTMLCollection;
|
||||
Public
|
||||
Constructor Create; Override;
|
||||
Destructor Destroy; Override;
|
||||
|
||||
Procedure Open;
|
||||
Procedure Close;
|
||||
Procedure Write (TheText : DOMString);
|
||||
Procedure Writeln (TheText : DOMString);
|
||||
Function GetElementById (Id :longword) : TDOMElement;
|
||||
Function GetElementByName (Name : DOMString) : TDOMNodeList;
|
||||
|
||||
Property Title : DOMString Read FTitle Write FTitle;
|
||||
Property Referrer : DOMString Read FReferrer;
|
||||
Property Domain : DOMString Read FDomain;
|
||||
Property URL : DOMString Read FURL;
|
||||
Property Body : THTMLElement Read FBody;
|
||||
Property Images : THTMLCollection Read Fimages;
|
||||
Property Applets : THTMLCollection Read FApplets;
|
||||
Property Links : THTMLCollection Read FLinks;
|
||||
Property Forms : THTMLCollection Read FForms;
|
||||
Property Anchors : THTMLCollection Read Fanchors;
|
||||
Property Cookie : DOMString Read FCookie;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
THTMLElement class
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
THTMLElement = Class(TDOMElement)
|
||||
Private
|
||||
FID,
|
||||
FTitle,
|
||||
FLang,
|
||||
FDir,
|
||||
FHTMLClassname : DOMString;
|
||||
Public
|
||||
Property ID : DOMString Read FID Write FID;
|
||||
Property Title : DOMString Read FTitle Write FTitle;
|
||||
Property Lang : DOMString Read FLang Write FLang;
|
||||
Property Dir : DOMString Read FDir Write FDir;
|
||||
Property HTMLClassName : DOMString Read FHTMLClassName Write FHTMLClassName;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
THTMLElement descendent classes
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
THTMLHtmlElement = Class(THTMLElement)
|
||||
Private
|
||||
FVersion : DOMString;
|
||||
Public
|
||||
Property Version : DOMString Read FVersion Write FVersion;
|
||||
end;
|
||||
|
||||
THTMLHeadElement = Class(THTMLElement)
|
||||
Private
|
||||
FProfile : DOMString;
|
||||
Public
|
||||
Property Profile : DOMString Read FProfile Write FProfile;
|
||||
end;
|
||||
|
||||
THTMLLinkElement = Class(THTMLElement)
|
||||
Private
|
||||
FDisabled : Boolean;
|
||||
FCharset,
|
||||
FHREF,
|
||||
FHREFLang,
|
||||
FMedia,
|
||||
FRel,
|
||||
FREV,
|
||||
FTarget,
|
||||
FHTMLType : DOMString;
|
||||
Public
|
||||
Property Disabled : Boolean Read FDisabled Write FDisabled;
|
||||
Property Charset : DOMString Read FCharset Write FCharset;
|
||||
Property HREF : DOMString Read FHREF Write FHREF;
|
||||
Property HREFLang : DOMString Read FHREFLang Write FHREFLang;
|
||||
Property Media : DOMString Read FMEdia Write FMedia;
|
||||
Property Rel : DOMString READ FRel Write FRel;
|
||||
Property Target : DOMString Read FTarget Write FTarget;
|
||||
Property HTMLType : DOMString Read FHTMLType Write FHTMLtype;
|
||||
end;
|
||||
|
||||
THTMLTitleElement = Class(THTMLElement)
|
||||
Private
|
||||
FHTMLtext : DOMString;
|
||||
Public
|
||||
Property HTMLText : DOMString Read FHTMLText Write FHTMLtext;
|
||||
end;
|
||||
|
||||
THTMLMetaElement = Class(THTMLElement)
|
||||
Private
|
||||
FContent,
|
||||
FhttpEquiv,
|
||||
FName,
|
||||
FScheme : DOMString;
|
||||
Public
|
||||
Property Content : DOMString Read FContent Write FContent;
|
||||
Property HttpEquiv : DOMString Read FHTTPEquiv Write FHTTPEquiv;
|
||||
Property Name : DOMString Read FName Write FName;
|
||||
Property Scheme : DOMString Read FScheme Write FScheme;
|
||||
end;
|
||||
|
||||
THTMLBaseElement = Class(TDOMElement)
|
||||
Private
|
||||
FHref,
|
||||
FTarget : DOMString;
|
||||
Public
|
||||
Property HRef : DOMString Read FHref Write FHRef;
|
||||
Property Target : DOMstring Read FTarget Write FTarget;
|
||||
end;
|
||||
|
||||
THTMLIsIndexElement = Class(THTMLElement)
|
||||
Private
|
||||
FForm : THTMLFormElement;
|
||||
FPrompt : DomString;
|
||||
Public
|
||||
Property Form : THTMLFormElement Read FForm;
|
||||
Property Prompt : DOMString Read FPrompt Write FPrompt;
|
||||
end;
|
||||
|
||||
|
||||
THTMLStyleElement = Class(THTMLElement)
|
||||
Private
|
||||
FDisabled : Boolean;
|
||||
FMEdia,
|
||||
FHTMLtype : DOMString;
|
||||
Public
|
||||
Property Disabled : Boolean Read FDisabled Write FDisabled;
|
||||
Property HTMLtype : DOMString Read FHTMLType Write FHTMLtype;
|
||||
end;
|
||||
|
||||
THTMLBodyElement = Class(THTMLElement)
|
||||
Private
|
||||
Falink,
|
||||
Fbackground,
|
||||
Fbgcolor,
|
||||
flink,
|
||||
fhtmltext,
|
||||
fvlink : DOMString;
|
||||
Public
|
||||
Property alink : DOMString Read falink write falink;
|
||||
Property background : DOMString Read Fbackground write FBackground;
|
||||
Property bgcolor : DOMString Read fbgcolor write fbgcolor;
|
||||
Property link : DOMString Read Flink Write flink;
|
||||
Property htmltext : DOMString read fhtmltext Write fhtmltext;
|
||||
Property vlink : DOMString Read fvLink Write fvLink ;
|
||||
end;
|
||||
|
||||
THTMLFormElement = Class(THTMLElement)
|
||||
Private
|
||||
FElements : THTMLCollection;
|
||||
Public
|
||||
Constructor Create(AOwner : TDOMDocument);override;
|
||||
Destructor Destroy;
|
||||
Procedure Submit;
|
||||
Procedure Reset;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
THTMLCollection
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Constructor THTMLCollection.Create;
|
||||
|
||||
begin
|
||||
FList := TList.Create;
|
||||
end;
|
||||
|
||||
Destructor THTMLCollection.Destroy;
|
||||
|
||||
begin
|
||||
FList.Free;
|
||||
Inherited Destroy;
|
||||
end;
|
||||
|
||||
Function THTMLCollection.GetLength : LongWord;
|
||||
|
||||
begin
|
||||
Result:=FList.Count;
|
||||
end;
|
||||
|
||||
Function THTMLCollection.Item(Index : longword) : TDOMNode;
|
||||
|
||||
begin
|
||||
If (Index<0) or (Index>Flist.Count-1) then
|
||||
Result:=Nil
|
||||
else
|
||||
Result:=TDOMNode(Flist[Index]);
|
||||
end;
|
||||
|
||||
Function THTMLCollection.NamedItem(Name : DomString) : TDOMNode;
|
||||
|
||||
Var I : longword;
|
||||
|
||||
begin
|
||||
Name:=UpperCase(Name);
|
||||
// linear search, since the list is not ordered.
|
||||
// W3 says nothing about ordering; maybe we can implement it ?
|
||||
For i:=0 to FList.Count-1 do
|
||||
If UpperCase(TDomNode(FList[i]).NodeName)=Name then
|
||||
begin
|
||||
Result:=TDomNode(Flist[I]);
|
||||
Exit;
|
||||
end;
|
||||
Result:=Nil;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
THTMLDocument class
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
|
||||
Constructor THTMLDocument.Create;
|
||||
|
||||
begin
|
||||
Inherited Create;
|
||||
end;
|
||||
|
||||
|
||||
Destructor THTMLDocument.Destroy;
|
||||
|
||||
begin
|
||||
Inherited Destroy;
|
||||
end;
|
||||
|
||||
|
||||
Procedure THTMLDocument.Open;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Procedure THTMLDocument.Close;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Procedure THTMLDocument.Write (TheText : DOMString);
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Procedure THTMLDocument.Writeln (TheText : DOMString);
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Function THTMLDocument.GetElementById (Id :longword) : TDOMElement;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Function THTMLDocument.GetElementByName (Name : DOMString) : TDOMNodeList;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
Constructor THTMLFormElement.Create(AOwner : TDOMDocument);
|
||||
|
||||
begin
|
||||
Inherited Create(AOWner);
|
||||
FElements:=THTMLCollection.Create;
|
||||
end;
|
||||
|
||||
|
||||
Destructor THTMLFormElement.Destroy;
|
||||
|
||||
begin
|
||||
FElements.Free;
|
||||
Inherited Destroy;
|
||||
end;
|
||||
|
||||
Procedure THTMLFormElement.Submit;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
Procedure THTMLFormElement.Reset;
|
||||
|
||||
begin
|
||||
end;
|
||||
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user