PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.17
Independent Analytics – WordPress Analytics Plugin v1.17
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / masterminds / html5 / src / HTML5 / Parser / TreeBuildingRules.php
independent-analytics / vendor / masterminds / html5 / src / HTML5 / Parser Last commit date
CharacterReference.php 3 years ago DOMTreeBuilder.php 3 years ago EventHandler.php 3 years ago FileInputStream.php 3 years ago InputStream.php 3 years ago ParseError.php 3 years ago Scanner.php 3 years ago StringInputStream.php 3 years ago Tokenizer.php 3 years ago TreeBuildingRules.php 3 years ago UTF8Utils.php 3 years ago
TreeBuildingRules.php
84 lines
1 <?php
2
3 namespace IAWP\Masterminds\HTML5\Parser;
4
5 /**
6 * Handles special-case rules for the DOM tree builder.
7 *
8 * Many tags have special rules that need to be accomodated on an
9 * individual basis. This class handles those rules.
10 *
11 * See section 8.1.2.4 of the spec.
12 *
13 * @todo - colgroup and col special behaviors
14 * - body and head special behaviors
15 */
16 class TreeBuildingRules
17 {
18 protected static $tags = array('li' => 1, 'dd' => 1, 'dt' => 1, 'rt' => 1, 'rp' => 1, 'tr' => 1, 'th' => 1, 'td' => 1, 'thead' => 1, 'tfoot' => 1, 'tbody' => 1, 'table' => 1, 'optgroup' => 1, 'option' => 1);
19 /**
20 * Returns true if the given tagname has special processing rules.
21 */
22 public function hasRules($tagname)
23 {
24 return isset(static::$tags[$tagname]);
25 }
26 /**
27 * Evaluate the rule for the current tag name.
28 *
29 * This may modify the existing DOM.
30 *
31 * @return \DOMElement The new Current DOM element.
32 */
33 public function evaluate($new, $current)
34 {
35 switch ($new->tagName) {
36 case 'li':
37 return $this->handleLI($new, $current);
38 case 'dt':
39 case 'dd':
40 return $this->handleDT($new, $current);
41 case 'rt':
42 case 'rp':
43 return $this->handleRT($new, $current);
44 case 'optgroup':
45 return $this->closeIfCurrentMatches($new, $current, array('optgroup'));
46 case 'option':
47 return $this->closeIfCurrentMatches($new, $current, array('option'));
48 case 'tr':
49 return $this->closeIfCurrentMatches($new, $current, array('tr'));
50 case 'td':
51 case 'th':
52 return $this->closeIfCurrentMatches($new, $current, array('th', 'td'));
53 case 'tbody':
54 case 'thead':
55 case 'tfoot':
56 case 'table':
57 // Spec isn't explicit about this, but it's necessary.
58 return $this->closeIfCurrentMatches($new, $current, array('thead', 'tfoot', 'tbody'));
59 }
60 return $current;
61 }
62 protected function handleLI($ele, $current)
63 {
64 return $this->closeIfCurrentMatches($ele, $current, array('li'));
65 }
66 protected function handleDT($ele, $current)
67 {
68 return $this->closeIfCurrentMatches($ele, $current, array('dt', 'dd'));
69 }
70 protected function handleRT($ele, $current)
71 {
72 return $this->closeIfCurrentMatches($ele, $current, array('rt', 'rp'));
73 }
74 protected function closeIfCurrentMatches($ele, $current, $match)
75 {
76 if (\in_array($current->tagName, $match, \true)) {
77 $current->parentNode->appendChild($ele);
78 } else {
79 $current->appendChild($ele);
80 }
81 return $ele;
82 }
83 }
84