API / Minn\Html\Tree / BodyRules

BodyRules final class

Minn\Html\Tree\BodyRules · public/minn/src/Minn/Html/Tree/BodyRules.php · 418 lines

The "in body" insertion mode, with select handled in body as the current spec does (no "in select" mode). The adoption agency runs its simple cases (the formatting element is closed with nothing special inside it); the reference stops on the others, and on an end tag for a formatting element that is not active.

Constants and properties

constFORMATTING = array ( 0 => 'A', 1 => 'B', 2 => 'BIG', 3 => 'CODE', 4 => 'EM', 5 => 'FONT', 6 => 'I', 7 => 'NOBR', 8 => 'S', 9 => 'SMALL', 10 => 'STRIKE', 11 => 'STRONG', 12 => 'TT', 13 => 'U', )
constSPECIAL = array ( 0 => 'ADDRESS', 1 => 'APPLET', 2 => 'AREA', 3 => 'ARTICLE', 4 => 'ASIDE', 5 => 'BASE', 6 => 'BASEFONT', 7 => 'BGSOUND', 8 => 'BLOCKQUOTE', 9 => 'BODY', 10 => 'BR', 11 => 'BUTTON', 12 => 'CAPTION', 13 => 'CENTER', 14 => 'COL', 15 => 'COLGROUP', 16 => 'DD', 17 => 'DETAILS', 18 => 'DIR', 19 => 'DIV', 20 => 'DL', 21 => 'DT', 22 => 'EMBED', 23 => 'FIELDSET', 24 => 'FIGCAPTION', 25 => 'FIGURE', 26 => 'FOOTER', 27 => 'FORM', 28 => 'FRAME', 29 => 'FRAMESET', 30 => 'H1', 31 => 'H2', 32 => 'H3', 33 => 'H4', 34 => 'H5', 35 => 'H6', 36 => 'HEAD', 37 => 'HEADER', 38 => 'HGROUP', 39 => 'HR', 40 => 'HTML', 41 => 'IFRAME', 42 => 'IMG', 43 => 'INPUT', 44 => 'KEYGEN', 45 => 'LI', 46 => 'LINK', 47 => 'LISTING', 48 => 'MAIN', 49 => 'MARQUEE', 50 => 'MENU', 51 => 'META', 52 => 'NAV', 53 => 'NOEMBED', 54 => 'NOFRAMES', 55 => 'NOSCRIPT', 56 => 'OBJECT', 57 => 'OL', 58 => 'P', 59 => 'PARAM', 60 => 'PLAINTEXT', 61 => 'PRE', 62 => 'SCRIPT', 63 => 'SEARCH', 64 => 'SECTION', 65 => 'SELECT', 66 => 'SOURCE', 67 => 'STYLE', 68 => 'SUMMARY', 69 => 'TABLE', 70 => 'TBODY', 71 => 'TD', 72 => 'TEMPLATE', 73 => 'TEXTAREA', 74 => 'TFOOT', 75 => 'TH', 76 => 'THEAD', 77 => 'TITLE', 78 => 'TR', 79 => 'TRACK', 80 => 'UL', 81 => 'WBR', 82 => 'XMP', )
privateBLOCKS = array ( 0 => 'ADDRESS', 1 => 'ARTICLE', 2 => 'ASIDE', 3 => 'BLOCKQUOTE', 4 => 'CENTER', 5 => 'DETAILS', 6 => 'DIALOG', 7 => 'DIR', 8 => 'DIV', 9 => 'DL', 10 => 'FIELDSET', 11 => 'FIGCAPTION', 12 => 'FIGURE', 13 => 'FOOTER', 14 => 'HEADER', 15 => 'HGROUP', 16 => 'MAIN', 17 => 'MENU', 18 => 'NAV', 19 => 'OL', 20 => 'P', 21 => 'SEARCH', 22 => 'SECTION', 23 => 'SUMMARY', 24 => 'UL', )
privateBLOCK_ENDS = array ( 0 => 'ADDRESS', 1 => 'ARTICLE', 2 => 'ASIDE', 3 => 'BLOCKQUOTE', 4 => 'BUTTON', 5 => 'CENTER', 6 => 'DETAILS', 7 => 'DIALOG', 8 => 'DIR', 9 => 'DIV', 10 => 'DL', 11 => 'FIELDSET', 12 => 'FIGCAPTION', 13 => 'FIGURE', 14 => 'FOOTER', 15 => 'HEADER', 16 => 'HGROUP', 17 => 'LISTING', 18 => 'MAIN', 19 => 'MENU', 20 => 'NAV', 21 => 'OL', 22 => 'PRE', 23 => 'SEARCH', 24 => 'SECTION', 25 => 'SUMMARY', 26 => 'UL', )
privateHEADINGS = array ( 0 => 'H1', 1 => 'H2', 2 => 'H3', 3 => 'H4', 4 => 'H5', 5 => 'H6', )

Public

staticprocess(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#

Processes one token in the "in body" insertion mode.

staticisSpecial(Minn\Html\Tree\Node $node): bool#

Whether the node is in the spec's "special" category.

Internals 32

Private and protected methods: how the class does its work. Not a contract; they change whenever the code is tidied.

privatetext(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privatestartTag(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privateendTag(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privateouterStart(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privateouterEnd(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privateblock(Minn\Html\Tree\Builder $b): void#
privateheading(Minn\Html\Tree\Builder $b): void#
privatepre(Minn\Html\Tree\Builder $b): void#
privateform(Minn\Html\Tree\Builder $b): void#
privatelistItem(Minn\Html\Tree\Builder $b, string $name): void#
privatebutton(Minn\Html\Tree\Builder $b): void#
privateanchor(Minn\Html\Tree\Builder $b): void#
privatenobr(Minn\Html\Tree\Builder $b): void#
privateformatting(Minn\Html\Tree\Builder $b): void#
privatewithMarker(Minn\Html\Tree\Builder $b): void#
privatetable(Minn\Html\Tree\Builder $b): void#
privatevoidElement(Minn\Html\Tree\Builder $b, Minn\Html\Tree\Token $t): void#
privatehr(Minn\Html\Tree\Builder $b): void#
privaterawText(Minn\Html\Tree\Builder $b, string $name): void#
privateselect(Minn\Html\Tree\Builder $b): void#
privateoption(Minn\Html\Tree\Builder $b, string $name): void#
privateruby(Minn\Html\Tree\Builder $b, string $name): void#
privateforeign(Minn\Html\Tree\Builder $b, string $name): void#
privateordinary(Minn\Html\Tree\Builder $b): void#
privatecloseBlock(Minn\Html\Tree\Builder $b, string $name): void#
privatecloseForm(Minn\Html\Tree\Builder $b): void#
privatecloseParagraph(Minn\Html\Tree\Builder $b): void#
privatecloseListItem(Minn\Html\Tree\Builder $b, string $name): void#
privatecloseHeading(Minn\Html\Tree\Builder $b): void#
privatecloseWithMarker(Minn\Html\Tree\Builder $b, string $name): void#
privateadoptionAgency(Minn\Html\Tree\Builder $b, string $name): void#

The adoption agency algorithm in the cases the reference runs: the formatting element closes with nothing special opened inside it.

privateanyOtherEnd(Minn\Html\Tree\Builder $b, string $name): void#