TreeConstructor
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
Unerledigte Tabellen Token
Gibt es unerledigte Tabellen-CharacterTokens
Template-Stacke
No description
Frameset-Mode deaktivieren
Frameset-OK Status
QuirksMode des Dokuments holen
Aktuelle Node
QuirksMode im Dokument aktivieren
Head-Element auf den Stack legen.
Nodes mit dem angegebenen Tag schließen Ist keine CurrentNode definiert wird nichts ausgeführt.
Prüfen ob der Tag in eine spezielle Kategorie gehört.
Überprüfung ob die angegebenen Tags auf den Stack der offenen Elemente liegen
Attribute von bestehenden Token auf oberste Node im Stack einhängen
Head-Element vom OpenStack löschen Ist kein Head Element definiert, so wird ein Fehler erzeugt.
Bei bestimmten Tags (z.B. pre) wird aus bequemlichkeitsgründen das erste Linefeed nach dem Tag ignoriert.
Scriptflag
Scriptflag setzen
Node vom Stapel der offenen Elemente entfernen Ist keine Node vorhanden, wird null zurückgegeben
FosterParenting aktivieren
FosterParenting deaktivieren
Node zum einhängen bestimmen
Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde
Zwischenspeicher des Einfügemodus für spätere Verwendung
Wiederherstellen
Einfügemodus holens
Spezielle offene Elemente schliessen. Über $exclude kann ein Tag aus der Liste angegeben werde, der nicht geschlossen werden soll.
Custom-Elements sind noch nicht vollständfig implementiert!
Fremdelement das kein HTML ist einfügen Für das Element wird eine Node-Klasse unterhalb des Namensraums \Alvine\Markup\Html\Element gesucht.
Fehler sammeln. Wird ein nicht abfangbarer Fehler gemeldet ($exception=true) wird eine ParserException geworfen und das parsen des HTML Dokuments beendet.
Den Stack der offenen Elemente holen
Einfügemodus zurücksetzen
Kontext
Spezieller Algorithmus
Details
at line 160
TreeConstructor
appendCharacterToPendingTableCharacterTokens(Character $token)
Token als unerledigt hinzufügen
at line 172
Character>
getPendingTableCharacterTokens()
Unerledigte Tabellen Token
at line 181
boolean
hasPendingTableCharacterTokensNotWhitespaces()
Gibt es unerledigte Tabellen-CharacterTokens
at line 193
Stack
getStackOfTemplateInsertionModes()
Template-Stacke
at line 201
InsertionMode|null
popTheCurrentTemplateInsertionMode()
at line 210
$this
pushOntoTheStackOfTemplateInsertionModes(InsertionMode $mode)
at line 220
TreeConstructor
setFramesetNotOK()
Frameset-Mode deaktivieren
at line 230
boolean
getFramesetNotOK()
Frameset-OK Status
at line 239
boolean
isQuirksMode()
QuirksMode des Dokuments holen
at line 250
TreeConstructor
setHead(Head $head)
Zeiger auf gültiges Head-Element setzen
at line 262
TreeConstructor
setForm(Form $form = null)
Zeiger auf gültiges Form-Tag setzen
at line 272
Form|null
getForm()
Gültiges Form-Tag
at line 283
Node|null
getCurrentNode()
Aktuelle Node
Ist keine Node vorhanden, so wird null zurückgegeben
at line 292
TreeConstructor
setQuirksMode()
QuirksMode im Dokument aktivieren
at line 304
TreeConstructor
pushHeadOntoStackOfOpenElements()
Head-Element auf den Stack legen.
Ist kein Zeiger auf das Head-Element angelegt, so wird ein Fehler gemeldet.
at line 318
TreeConstructor
closeElement(string $tag)
Nodes mit dem angegebenen Tag schließen Ist keine CurrentNode definiert wird nichts ausgeführt.
at line 345
boolean
isInSpecialCategory(string $tag)
Prüfen ob der Tag in eine spezielle Kategorie gehört.
at line 364
boolean
isElementOnStack(array $tagNames)
Überprüfung ob die angegebenen Tags auf den Stack der offenen Elemente liegen
at line 380
TreeConstructor
addAttributeToExistingElement(string|array $tagName, StartTag $token)
Attribute von bestehenden Token auf oberste Node im Stack einhängen
at line 398
TreeConstructor
popHeadFromStackOfOpenElements()
Head-Element vom OpenStack löschen Ist kein Head Element definiert, so wird ein Fehler erzeugt.
at line 411
TreeConstructor
setTokenizer(Tokenizer $tokenizer)
Mit Tokenizer verbinden
at line 422
TreeConstructor
ignoreLfInBeginningNextToken()
Bei bestimmten Tags (z.B. pre) wird aus bequemlichkeitsgründen das erste Linefeed nach dem Tag ignoriert.
at line 438
TreeConstructor
dispatch(Token $token)
Zentrale Funktion zur Verarbeitung der Token.
Der Dispatcher übergibt den Token an den entsprechenden Prozessschritt.
at line 519
boolean
isScriptingFlag()
Scriptflag
at line 530
TreeConstructor
setScriptingFlag(boolean $flag)
Scriptflag setzen
at line 543
TreeConstructor
pushOnOpenElementsStack(Node $node)
Node auf den Stapel der offenen Elemente legen.
at line 554
null|Node
popOpenElementsFromStack()
Node vom Stapel der offenen Elemente entfernen Ist keine Node vorhanden, wird null zurückgegeben
at line 566
TreeConstructor
switchInsertionMode(InsertionMode $mode)
Den Prozessschritt in einen anderen Bereich ändern.
at line 578
TreeConstructor
insertComment(Comment $token, Node $position = null)
Kommentar einfügen
at line 611
TreeConstructor
enableFosterParenting()
FosterParenting aktivieren
at line 623
TreeConstructor
disableFosterParenting()
FosterParenting deaktivieren
at line 635
Node
getAppropriatePlaceForInsertingNode()
Node zum einhängen bestimmen
at line 708
Tokenizer|null
getTokenizer()
Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde
at line 720
protected TreeConstructor
insertGenericTextElement(Tag $token, State $state)
TextElement einfügen
at line 749
TreeConstructor
insertGenericRCDATAElement(Tag $token)
RCData Element einfügen
at line 762
TreeConstructor
insertGenericRawTextElement(Tag $token)
RawText Element einfügen
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.
at line 789
TreeConstructor
switchInsertionModeToOriginal()
Wiederherstellen
Einfügemodus TreeConstructor::letTheOriginalInsertionModeCurrentInsertionMode() gemerkten Modus wieder herstellen.
at line 799
InsertionMode
getInsertionMode()
Einfügemodus holens
at line 810
TreeConstructor
insertScriptDataElement(Token $token)
ScriptData Element einfügen
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.
at line 872
TreeConstructor
insertHtmlElement(Tag $token)
HTML Element einfügen
at line 914
TreeConstructor
appendNode(Node $node)
Node $node einfügen
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!
at line 954
Element
createAnElementForAToken(Namespaces $namespaces, Token $token)
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.
at line 1040
TreeConstructor
insertCharacter(Character $token)
Zeichen-Token einfügen
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.
at line 1106
OpenElementsStack
getOpenElementsStack()
Den Stack der offenen Elemente holen
at line 1117
TreeConstructor
resetTheInsertionModeAppropriately()
Einfügemodus zurücksetzen
at line 1191
TreeConstructor
setContext(Node $context)
Kontext setzen
at line 1201
Node|null
getContext()
Kontext
at line 1214
runAdoptionAgencyAlgorithm(string $subject)
Spezieller Algorithmus