class TreeConstructor extends Alvine

Der TreeConstructor ist für die Erstellung des Dokuments verantwortlich und erstellt anhand der übergebenen Token den Node-Baum.

Properties

protected Document $document
protected OpenElementsStack $openElementsStack
protected InsertionMode $insertionMode
protected boolean $fosterParenting
protected Node $overrideTarget
protected array $parseError
protected Head $headElement
protected Form $formElement
protected Parser $parser
protected Tokenizer $tokenizer
protected boolean $scriptingFlag
protected boolean $framesetOk
protected Node $context
protected Stack $stackOfTemplateInsertionModes
protected Token $currentToken
protected boolean $ignoreLFToken
protected Character> $pendingTableCharacterTokens
protected InsertionMode $originalInsertionMode

Methods

__construct(Parser $parser, Document $document)

Neuen TreeConstructor

Character>
getPendingTableCharacterTokens()

Unerledigte Tabellen Token

boolean
hasPendingTableCharacterTokensNotWhitespaces()

Gibt es unerledigte Tabellen-CharacterTokens

Stack
InsertionMode|null
setFramesetNotOK()

Frameset-Mode deaktivieren

boolean
getFramesetNotOK()

Frameset-OK Status

boolean
isQuirksMode()

QuirksMode des Dokuments holen

setHead(Head $head)

Zeiger auf gültiges Head-Element setzen

setForm(Form $form = null)

Zeiger auf gültiges Form-Tag setzen

Form|null
getForm()

Gültiges Form-Tag

Node|null
getCurrentNode()

Aktuelle Node

setQuirksMode()

QuirksMode im Dokument aktivieren

pushHeadOntoStackOfOpenElements()

Head-Element auf den Stack legen.

closeElement(string $tag)

Nodes mit dem angegebenen Tag schließen Ist keine CurrentNode definiert wird nichts ausgeführt.

boolean
isInSpecialCategory(string $tag)

Prüfen ob der Tag in eine spezielle Kategorie gehört.

boolean
isElementOnStack(array $tagNames)

Überprüfung ob die angegebenen Tags auf den Stack der offenen Elemente liegen

addAttributeToExistingElement(string|array $tagName, StartTag $token)

Attribute von bestehenden Token auf oberste Node im Stack einhängen

popHeadFromStackOfOpenElements()

Head-Element vom OpenStack löschen Ist kein Head Element definiert, so wird ein Fehler erzeugt.

setTokenizer(Tokenizer $tokenizer)

Mit Tokenizer verbinden

ignoreLfInBeginningNextToken()

Bei bestimmten Tags (z.B. pre) wird aus bequemlichkeitsgründen das erste Linefeed nach dem Tag ignoriert.

dispatch(Token $token)

Zentrale Funktion zur Verarbeitung der Token.

boolean
isScriptingFlag()

Scriptflag

setScriptingFlag(boolean $flag)

Scriptflag setzen

pushOnOpenElementsStack(Node $node)

Node auf den Stapel der offenen Elemente legen.

null|Node
popOpenElementsFromStack()

Node vom Stapel der offenen Elemente entfernen Ist keine Node vorhanden, wird null zurückgegeben

switchInsertionMode(InsertionMode $mode)

Den Prozessschritt in einen anderen Bereich ändern.

insertComment(Comment $token, Node $position = null)

Kommentar einfügen

enableFosterParenting()

FosterParenting aktivieren

disableFosterParenting()

FosterParenting deaktivieren

getAppropriatePlaceForInsertingNode()

Node zum einhängen bestimmen

Tokenizer|null
getTokenizer()

Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde

insertGenericTextElement(Tag $token, State $state)

TextElement einfügen

insertGenericRCDATAElement(Tag $token)

RCData Element einfügen

insertGenericRawTextElement(Tag $token)

RawText Element einfügen

letTheOriginalInsertionModeCurrentInsertionMode()

Zwischenspeicher des Einfügemodus für spätere Verwendung

getInsertionMode()

Einfügemodus holens

insertScriptDataElement(Token $token)

ScriptData Element einfügen

generateImpliedEndTags(string $exclude = null)

Spezielle offene Elemente schliessen. Über $exclude kann ein Tag aus der Liste angegeben werde, der nicht geschlossen werden soll.

insertHtmlElement(Tag $token)

HTML Element einfügen

appendNode(Node $node)

Node $node einfügen

Custom|null
lookUpACustomElementDefinition(Document $document, string|null $namespace, string|null $localName, string|null $is)

Custom-Elements sind noch nicht vollständfig implementiert!

createAnElementForAToken(Namespaces $namespaces, Token $token)

No description

insertForeignElement(Namespaces $namespace, Token $token)

Fremdelement das kein HTML ist einfügen Für das Element wird eine Node-Klasse unterhalb des Namensraums \Alvine\Markup\Html\Element gesucht.

insertCharacter(Character $token)

Zeichen-Token einfügen

raiseParseError(boolean $exception = false)

Fehler sammeln. Wird ein nicht abfangbarer Fehler gemeldet ($exception=true) wird eine ParserException geworfen und das parsen des HTML Dokuments beendet.

OpenElementsStack
getOpenElementsStack()

Den Stack der offenen Elemente holen

resetTheInsertionModeAppropriately()

Einfügemodus zurücksetzen

setContext(Node $context)

Kontext setzen

Node|null
getContext()

Kontext

runAdoptionAgencyAlgorithm(string $subject)

Spezieller Algorithmus

Details

at line 137
__construct(Parser $parser, Document $document)

Neuen TreeConstructor

Parameters

Parser $parser
Document $document

at line 160
TreeConstructor appendCharacterToPendingTableCharacterTokens(Character $token)

Token als unerledigt hinzufügen

Parameters

Character $token

Return Value

TreeConstructor

at line 172
Character> getPendingTableCharacterTokens()

Unerledigte Tabellen Token

Return Value

Character>

at line 181
boolean hasPendingTableCharacterTokensNotWhitespaces()

Gibt es unerledigte Tabellen-CharacterTokens

Return Value

boolean

at line 193
Stack getStackOfTemplateInsertionModes()

Template-Stacke

Return Value

Stack

at line 201
InsertionMode|null popTheCurrentTemplateInsertionMode()

Return Value

InsertionMode|null

at line 210
$this pushOntoTheStackOfTemplateInsertionModes(InsertionMode $mode)

Parameters

InsertionMode $mode

Return Value

$this

at line 220
TreeConstructor setFramesetNotOK()

Frameset-Mode deaktivieren

Return Value

TreeConstructor

at line 230
boolean getFramesetNotOK()

Frameset-OK Status

Return Value

boolean

at line 239
boolean isQuirksMode()

QuirksMode des Dokuments holen

Return Value

boolean

at line 250
TreeConstructor setHead(Head $head)

Zeiger auf gültiges Head-Element setzen

Parameters

Head $head

Return Value

TreeConstructor

at line 262
TreeConstructor setForm(Form $form = null)

Zeiger auf gültiges Form-Tag setzen

Parameters

Form $form

Return Value

TreeConstructor

at line 272
Form|null getForm()

Gültiges Form-Tag

Return Value

Form|null

at line 283
Node|null getCurrentNode()

Aktuelle Node

Ist keine Node vorhanden, so wird null zurückgegeben

Return Value

Node|null

at line 292
TreeConstructor setQuirksMode()

QuirksMode im Dokument aktivieren

Return Value

TreeConstructor

at line 304
TreeConstructor pushHeadOntoStackOfOpenElements()

Head-Element auf den Stack legen.

Ist kein Zeiger auf das Head-Element angelegt, so wird ein Fehler gemeldet.

Return Value

TreeConstructor

at line 318
TreeConstructor closeElement(string $tag)

Nodes mit dem angegebenen Tag schließen Ist keine CurrentNode definiert wird nichts ausgeführt.

Parameters

string $tag Tag-Name z.B. div

Return Value

TreeConstructor

at line 345
boolean isInSpecialCategory(string $tag)

Prüfen ob der Tag in eine spezielle Kategorie gehört.

Parameters

string $tag Tag-Name z.B. div

Return Value

boolean

at line 364
boolean isElementOnStack(array $tagNames)

Überprüfung ob die angegebenen Tags auf den Stack der offenen Elemente liegen

Parameters

array $tagNames Tag-Namen

Return Value

boolean

at line 380
TreeConstructor addAttributeToExistingElement(string|array $tagName, StartTag $token)

Attribute von bestehenden Token auf oberste Node im Stack einhängen

Parameters

string|array $tagName Name des Tags
StartTag $token Token

Return Value

TreeConstructor

at line 398
TreeConstructor popHeadFromStackOfOpenElements()

Head-Element vom OpenStack löschen Ist kein Head Element definiert, so wird ein Fehler erzeugt.

Return Value

TreeConstructor

at line 411
TreeConstructor setTokenizer(Tokenizer $tokenizer)

Mit Tokenizer verbinden

Parameters

Tokenizer $tokenizer

Return Value

TreeConstructor

at line 422
TreeConstructor ignoreLfInBeginningNextToken()

Bei bestimmten Tags (z.B. pre) wird aus bequemlichkeitsgründen das erste Linefeed nach dem Tag ignoriert.

Return Value

TreeConstructor

at line 438
TreeConstructor dispatch(Token $token)

Zentrale Funktion zur Verarbeitung der Token.

Der Dispatcher übergibt den Token an den entsprechenden Prozessschritt.

Parameters

Token $token

Return Value

TreeConstructor

Exceptions

UnsupportedException

at line 519
boolean isScriptingFlag()

Scriptflag

Return Value

boolean

at line 530
TreeConstructor setScriptingFlag(boolean $flag)

Scriptflag setzen

Parameters

boolean $flag

Return Value

TreeConstructor

at line 543
TreeConstructor pushOnOpenElementsStack(Node $node)

Node auf den Stapel der offenen Elemente legen.

Parameters

Node $node

Return Value

TreeConstructor

at line 554
null|Node popOpenElementsFromStack()

Node vom Stapel der offenen Elemente entfernen Ist keine Node vorhanden, wird null zurückgegeben

Return Value

null|Node

at line 566
TreeConstructor switchInsertionMode(InsertionMode $mode)

Den Prozessschritt in einen anderen Bereich ändern.

Parameters

InsertionMode $mode

Return Value

TreeConstructor

at line 578
TreeConstructor insertComment(Comment $token, Node $position = null)

Kommentar einfügen

Parameters

Comment $token
Node $position

Return Value

TreeConstructor

at line 611
TreeConstructor enableFosterParenting()

FosterParenting aktivieren

Return Value

TreeConstructor

at line 623
TreeConstructor disableFosterParenting()

FosterParenting deaktivieren

Return Value

TreeConstructor

at line 635
Node getAppropriatePlaceForInsertingNode()

Node zum einhängen bestimmen

Return Value

Node

at line 708
Tokenizer|null getTokenizer()

Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde

Return Value

Tokenizer|null

at line 720
protected TreeConstructor insertGenericTextElement(Tag $token, State $state)

TextElement einfügen

Parameters

Tag $token Token
State $state Status

Return Value

TreeConstructor

at line 749
TreeConstructor insertGenericRCDATAElement(Tag $token)

RCData Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 762
TreeConstructor insertGenericRawTextElement(Tag $token)

RawText Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 776
TreeConstructor letTheOriginalInsertionModeCurrentInsertionMode()

Zwischenspeicher des Einfügemodus für spätere Verwendung

Mit der Methode TreeConstructor::switchInsertionModeToOriginal() lässt sich der gemerkte Status wieder ermitteln.

Return Value

TreeConstructor

at line 789
TreeConstructor switchInsertionModeToOriginal()

Wiederherstellen

Einfügemodus TreeConstructor::letTheOriginalInsertionModeCurrentInsertionMode() gemerkten Modus wieder herstellen.

Return Value

TreeConstructor

at line 799
InsertionMode getInsertionMode()

Einfügemodus holens

Return Value

InsertionMode

at line 810
TreeConstructor insertScriptDataElement(Token $token)

ScriptData Element einfügen

Parameters

Token $token

Return Value

TreeConstructor

at line 840
TreeConstructor generateImpliedEndTags(string $exclude = null)

Spezielle offene Elemente schliessen. Über $exclude kann ein Tag aus der Liste angegeben werde, der nicht geschlossen werden soll.

Geschlossen bedeutet das Element wird vom OpenStack entfernt.

Parameters

string $exclude Ausschlüsse (z.B. div)

Return Value

TreeConstructor

at line 872
TreeConstructor insertHtmlElement(Tag $token)

HTML Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 914
TreeConstructor appendNode(Node $node)

Node $node einfügen

Parameters

Node $node Kind

Return Value

TreeConstructor

at line 933
Custom|null lookUpACustomElementDefinition(Document $document, string|null $namespace, string|null $localName, string|null $is)

Custom-Elements sind noch nicht vollständfig implementiert!

Parameters

Document $document
string|null $namespace
string|null $localName
string|null $is

Return Value

Custom|null

at line 954
Element createAnElementForAToken(Namespaces $namespaces, Token $token)

Parameters

Namespaces $namespaces
Token $token

Return Value

Element

at line 1012
TreeConstructor insertForeignElement(Namespaces $namespace, Token $token)

Fremdelement das kein HTML ist einfügen Für das Element wird eine Node-Klasse unterhalb des Namensraums \Alvine\Markup\Html\Element gesucht.

Parameters

Namespaces $namespace
Token $token

Return Value

TreeConstructor

at line 1040
TreeConstructor insertCharacter(Character $token)

Zeichen-Token einfügen

Parameters

Character $token

Return Value

TreeConstructor

at line 1077
TreeConstructor raiseParseError(boolean $exception = false)

Fehler sammeln. Wird ein nicht abfangbarer Fehler gemeldet ($exception=true) wird eine ParserException geworfen und das parsen des HTML Dokuments beendet.

Parameters

boolean $exception

Return Value

TreeConstructor

Exceptions

ParserException

at line 1106
OpenElementsStack getOpenElementsStack()

Den Stack der offenen Elemente holen

Return Value

OpenElementsStack

at line 1117
TreeConstructor resetTheInsertionModeAppropriately()

Einfügemodus zurücksetzen

Return Value

TreeConstructor

at line 1191
TreeConstructor setContext(Node $context)

Kontext setzen

Parameters

Node $context

Return Value

TreeConstructor

at line 1201
Node|null getContext()

Kontext

Return Value

Node|null Kontext

at line 1214
runAdoptionAgencyAlgorithm(string $subject)

Spezieller Algorithmus

Parameters

string $subject