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 162
TreeConstructor
appendCharacterToPendingTableCharacterTokens(Character $token)
Token als unerledigt hinzufügen
at line 174
Character>
getPendingTableCharacterTokens()
Unerledigte Tabellen Token
at line 183
boolean
hasPendingTableCharacterTokensNotWhitespaces()
Gibt es unerledigte Tabellen-CharacterTokens
at line 195
Stack
getStackOfTemplateInsertionModes()
Template-Stacke
at line 203
InsertionMode|null
popTheCurrentTemplateInsertionMode()
at line 212
$this
pushOntoTheStackOfTemplateInsertionModes(InsertionMode $mode)
at line 222
TreeConstructor
setFramesetNotOK()
Frameset-Mode deaktivieren
at line 232
boolean
getFramesetNotOK()
Frameset-OK Status
at line 241
boolean
isQuirksMode()
QuirksMode des Dokuments holen
at line 252
TreeConstructor
setHead(Head $head)
Zeiger auf gültiges Head-Element setzen
at line 264
TreeConstructor
setForm(Form $form = null)
Zeiger auf gültiges Form-Tag setzen
at line 274
Form|null
getForm()
Gültiges Form-Tag
at line 285
Node|null
getCurrentNode()
Aktuelle Node
Ist keine Node vorhanden, so wird null zurückgegeben
at line 294
TreeConstructor
setQuirksMode()
QuirksMode im Dokument aktivieren
at line 306
TreeConstructor
pushHeadOntoStackOfOpenElements()
Head-Element auf den Stack legen.
Ist kein Zeiger auf das Head-Element angelegt, so wird ein Fehler gemeldet.
at line 320
TreeConstructor
closeElement(string $tag)
Nodes mit dem angegebenen Tag schließen Ist keine CurrentNode definiert wird nichts ausgeführt.
at line 347
boolean
isInSpecialCategory(string $tag)
Prüfen ob der Tag in eine spezielle Kategorie gehört.
at line 366
boolean
isElementOnStack(array $tagNames)
Überprüfung ob die angegebenen Tags auf den Stack der offenen Elemente liegen
at line 382
TreeConstructor
addAttributeToExistingElement(string|array $tagName, StartTag $token)
Attribute von bestehenden Token auf oberste Node im Stack einhängen
at line 400
TreeConstructor
popHeadFromStackOfOpenElements()
Head-Element vom OpenStack löschen Ist kein Head Element definiert, so wird ein Fehler erzeugt.
at line 413
TreeConstructor
setTokenizer(Tokenizer $tokenizer)
Mit Tokenizer verbinden
at line 424
TreeConstructor
ignoreLfInBeginningNextToken()
Bei bestimmten Tags (z.B. pre) wird aus bequemlichkeitsgründen das erste Linefeed nach dem Tag ignoriert.
at line 440
TreeConstructor
dispatch(Token $token)
Zentrale Funktion zur Verarbeitung der Token.
Der Dispatcher übergibt den Token an den entsprechenden Prozessschritt.
at line 520
boolean
isScriptingFlag()
Scriptflag
at line 531
TreeConstructor
setScriptingFlag(boolean $flag)
Scriptflag setzen
at line 544
TreeConstructor
pushOnOpenElementsStack(Node $node)
Node auf den Stapel der offenen Elemente legen.
at line 555
null|Node
popOpenElementsFromStack()
Node vom Stapel der offenen Elemente entfernen Ist keine Node vorhanden, wird null zurückgegeben
at line 567
TreeConstructor
switchInsertionMode(InsertionMode $mode)
Den Prozessschritt in einen anderen Bereich ändern.
at line 579
TreeConstructor
insertComment(Comment $token, Node $position = null)
Kommentar einfügen
at line 612
TreeConstructor
enableFosterParenting()
FosterParenting aktivieren
at line 624
TreeConstructor
disableFosterParenting()
FosterParenting deaktivieren
at line 636
Node
getAppropriatePlaceForInsertingNode()
Node zum einhängen bestimmen
at line 709
Tokenizer|null
getTokenizer()
Verwendeter Tokenizer oder \null wenn kein Tokenizer gesetzt wurde
at line 721
protected TreeConstructor
insertGenericTextElement(Tag $token, State $state)
TextElement einfügen
at line 750
TreeConstructor
insertGenericRCDATAElement(Tag $token)
RCData Element einfügen
at line 763
TreeConstructor
insertGenericRawTextElement(Tag $token)
RawText Element einfügen
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.
at line 790
TreeConstructor
switchInsertionModeToOriginal()
Wiederherstellen
Einfügemodus TreeConstructor::letTheOriginalInsertionModeCurrentInsertionMode() gemerkten Modus wieder herstellen.
at line 800
InsertionMode
getInsertionMode()
Einfügemodus holens
at line 811
TreeConstructor
insertScriptDataElement(Token $token)
ScriptData Element einfügen
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.
at line 873
TreeConstructor
insertHtmlElement(Tag $token)
HTML Element einfügen
at line 915
TreeConstructor
appendNode(Node $node)
Node $node einfügen
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!
at line 955
Element
createAnElementForAToken(Namespaces $namespaces, Token $token)
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.
at line 1041
TreeConstructor
insertCharacter(Character $token)
Zeichen-Token einfügen
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.
at line 1107
OpenElementsStack
getOpenElementsStack()
Den Stack der offenen Elemente holen
at line 1118
TreeConstructor
resetTheInsertionModeAppropriately()
Einfügemodus zurücksetzen
at line 1192
TreeConstructor
setContext(Node $context)
Kontext setzen
at line 1202
Node|null
getContext()
Kontext
at line 1215
runAdoptionAgencyAlgorithm(string $subject)
Spezieller Algorithmus