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 139
__construct(Parser $parser, Document $document)

Neuen TreeConstructor

Parameters

Parser $parser
Document $document

at line 162
TreeConstructor appendCharacterToPendingTableCharacterTokens(Character $token)

Token als unerledigt hinzufügen

Parameters

Character $token

Return Value

TreeConstructor

at line 174
Character> getPendingTableCharacterTokens()

Unerledigte Tabellen Token

Return Value

Character>

at line 183
boolean hasPendingTableCharacterTokensNotWhitespaces()

Gibt es unerledigte Tabellen-CharacterTokens

Return Value

boolean

at line 195
Stack getStackOfTemplateInsertionModes()

Template-Stacke

Return Value

Stack

at line 203
InsertionMode|null popTheCurrentTemplateInsertionMode()

Return Value

InsertionMode|null

at line 212
$this pushOntoTheStackOfTemplateInsertionModes(InsertionMode $mode)

Parameters

InsertionMode $mode

Return Value

$this

at line 222
TreeConstructor setFramesetNotOK()

Frameset-Mode deaktivieren

Return Value

TreeConstructor

at line 232
boolean getFramesetNotOK()

Frameset-OK Status

Return Value

boolean

at line 241
boolean isQuirksMode()

QuirksMode des Dokuments holen

Return Value

boolean

at line 252
TreeConstructor setHead(Head $head)

Zeiger auf gültiges Head-Element setzen

Parameters

Head $head

Return Value

TreeConstructor

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

Zeiger auf gültiges Form-Tag setzen

Parameters

Form $form

Return Value

TreeConstructor

at line 274
Form|null getForm()

Gültiges Form-Tag

Return Value

Form|null

at line 285
Node|null getCurrentNode()

Aktuelle Node

Ist keine Node vorhanden, so wird null zurückgegeben

Return Value

Node|null

at line 294
TreeConstructor setQuirksMode()

QuirksMode im Dokument aktivieren

Return Value

TreeConstructor

at line 306
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 320
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 347
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 366
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 382
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 400
TreeConstructor popHeadFromStackOfOpenElements()

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

Return Value

TreeConstructor

at line 413
TreeConstructor setTokenizer(Tokenizer $tokenizer)

Mit Tokenizer verbinden

Parameters

Tokenizer $tokenizer

Return Value

TreeConstructor

at line 424
TreeConstructor ignoreLfInBeginningNextToken()

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

Return Value

TreeConstructor

at line 440
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 520
boolean isScriptingFlag()

Scriptflag

Return Value

boolean

at line 531
TreeConstructor setScriptingFlag(boolean $flag)

Scriptflag setzen

Parameters

boolean $flag

Return Value

TreeConstructor

at line 544
TreeConstructor pushOnOpenElementsStack(Node $node)

Node auf den Stapel der offenen Elemente legen.

Parameters

Node $node

Return Value

TreeConstructor

at line 555
null|Node popOpenElementsFromStack()

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

Return Value

null|Node

at line 567
TreeConstructor switchInsertionMode(InsertionMode $mode)

Den Prozessschritt in einen anderen Bereich ändern.

Parameters

InsertionMode $mode

Return Value

TreeConstructor

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

Kommentar einfügen

Parameters

Comment $token
Node $position

Return Value

TreeConstructor

at line 612
TreeConstructor enableFosterParenting()

FosterParenting aktivieren

Return Value

TreeConstructor

at line 624
TreeConstructor disableFosterParenting()

FosterParenting deaktivieren

Return Value

TreeConstructor

at line 636
Node getAppropriatePlaceForInsertingNode()

Node zum einhängen bestimmen

Return Value

Node

at line 709
Tokenizer|null getTokenizer()

Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde

Return Value

Tokenizer|null

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

TextElement einfügen

Parameters

Tag $token Token
State $state Status

Return Value

TreeConstructor

at line 750
TreeConstructor insertGenericRCDATAElement(Tag $token)

RCData Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 763
TreeConstructor insertGenericRawTextElement(Tag $token)

RawText Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 777
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 790
TreeConstructor switchInsertionModeToOriginal()

Wiederherstellen

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

Return Value

TreeConstructor

at line 800
InsertionMode getInsertionMode()

Einfügemodus holens

Return Value

InsertionMode

at line 811
TreeConstructor insertScriptDataElement(Token $token)

ScriptData Element einfügen

Parameters

Token $token

Return Value

TreeConstructor

at line 841
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 873
TreeConstructor insertHtmlElement(Tag $token)

HTML Element einfügen

Parameters

Tag $token

Return Value

TreeConstructor

at line 915
TreeConstructor appendNode(Node $node)

Node $node einfügen

Parameters

Node $node Kind

Return Value

TreeConstructor

at line 934
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 955
Element createAnElementForAToken(Namespaces $namespaces, Token $token)

Parameters

Namespaces $namespaces
Token $token

Return Value

Element

at line 1013
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 1041
TreeConstructor insertCharacter(Character $token)

Zeichen-Token einfügen

Parameters

Character $token

Return Value

TreeConstructor

at line 1078
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 1107
OpenElementsStack getOpenElementsStack()

Den Stack der offenen Elemente holen

Return Value

OpenElementsStack

at line 1118
TreeConstructor resetTheInsertionModeAppropriately()

Einfügemodus zurücksetzen

Return Value

TreeConstructor

at line 1192
TreeConstructor setContext(Node $context)

Kontext setzen

Parameters

Node $context

Return Value

TreeConstructor

at line 1202
Node|null getContext()

Kontext

Return Value

Node|null Kontext

at line 1215
runAdoptionAgencyAlgorithm(string $subject)

Spezieller Algorithmus

Parameters

string $subject