mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-26 10:39:14 +02:00
370 lines
8.7 KiB
ObjectPascal
370 lines
8.7 KiB
ObjectPascal
{
|
|
$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. |