updated core and modules
This commit is contained in:
Vendored
+10
-3
@@ -1,10 +1,17 @@
|
||||
# Release Notes
|
||||
|
||||
2.2.1 (2015-05-10)
|
||||
2.2.2 (2016-10-22)
|
||||
|
||||
- #109: Fixed issue where address tag could be written without closing tag
|
||||
- #116: In XML mode, tags are case sensitive
|
||||
- #115: Fix PHP Notice in OutputRules
|
||||
- #112: fix parsing of options of an optgroup
|
||||
- #111: Adding test for the address tag
|
||||
|
||||
2.2.0 (2015-04-11)
|
||||
2.2.1 (2016-05-10)
|
||||
|
||||
- #109: Fixed issue where address tag could be written without closing tag (thanks sylus)
|
||||
|
||||
2.2.0 (2016-04-11)
|
||||
|
||||
- #105: Enable composer cache (for CI/CD)
|
||||
- #100: Use mb_substitute_character inset of ini_set for environments where
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
"dev-master": "2.2-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-4
@@ -166,9 +166,10 @@ class HTML5
|
||||
public function parse(\Masterminds\HTML5\Parser\InputStream $input, array $options = array())
|
||||
{
|
||||
$this->errors = array();
|
||||
$events = new DOMTreeBuilder(false, array_merge($this->getOptions(), $options));
|
||||
$options = array_merge($this->getOptions(), $options);
|
||||
$events = new DOMTreeBuilder(false, $options);
|
||||
$scanner = new Scanner($input);
|
||||
$parser = new Tokenizer($scanner, $events);
|
||||
$parser = new Tokenizer($scanner, $events, !empty($options['xmlNamespaces']) ? Tokenizer::CONFORMANT_XML: Tokenizer::CONFORMANT_HTML);
|
||||
|
||||
$parser->parse();
|
||||
$this->errors = $events->getErrors();
|
||||
@@ -184,9 +185,10 @@ class HTML5
|
||||
*/
|
||||
public function parseFragment(\Masterminds\HTML5\Parser\InputStream $input, array $options = array())
|
||||
{
|
||||
$events = new DOMTreeBuilder(true, array_merge($this->getOptions(), $options));
|
||||
$options = array_merge($this->getOptions(), $options);
|
||||
$events = new DOMTreeBuilder(true, $options);
|
||||
$scanner = new Scanner($input);
|
||||
$parser = new Tokenizer($scanner, $events);
|
||||
$parser = new Tokenizer($scanner, $events, !empty($options['xmlNamespaces']) ? Tokenizer::CONFORMANT_XML: Tokenizer::CONFORMANT_HTML);
|
||||
|
||||
$parser->parse();
|
||||
$this->errors = $events->getErrors();
|
||||
|
||||
+11
-3
@@ -43,6 +43,10 @@ class Tokenizer
|
||||
protected $textMode = 0; // TEXTMODE_NORMAL;
|
||||
protected $untilTag = null;
|
||||
|
||||
const CONFORMANT_XML = 'xml';
|
||||
const CONFORMANT_HTML = 'html';
|
||||
protected $mode = self::CONFORMANT_HTML;
|
||||
|
||||
const WHITE = "\t\n\f ";
|
||||
|
||||
/**
|
||||
@@ -57,11 +61,13 @@ class Tokenizer
|
||||
* @param \Masterminds\HTML5\Parser\EventHandler $eventHandler
|
||||
* An event handler, initialized and ready to receive
|
||||
* events.
|
||||
* @param string $mode
|
||||
*/
|
||||
public function __construct($scanner, $eventHandler)
|
||||
public function __construct($scanner, $eventHandler, $mode = self::CONFORMANT_HTML)
|
||||
{
|
||||
$this->scanner = $scanner;
|
||||
$this->events = $eventHandler;
|
||||
$this->mode = $mode;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -335,7 +341,8 @@ class Tokenizer
|
||||
return $this->bogusComment('</');
|
||||
}
|
||||
|
||||
$name = strtolower($this->scanner->charsUntil("\n\f \t>"));
|
||||
$name = $this->scanner->charsUntil("\n\f \t>");
|
||||
$name = $this->mode === self::CONFORMANT_XML ? $name: strtolower($name);
|
||||
// Trash whitespace.
|
||||
$this->scanner->whitespace();
|
||||
|
||||
@@ -362,7 +369,8 @@ class Tokenizer
|
||||
}
|
||||
|
||||
// We know this is at least one char.
|
||||
$name = strtolower($this->scanner->charsWhile(":_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
|
||||
$name = $this->scanner->charsWhile(":_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
|
||||
$name = $this->mode === self::CONFORMANT_XML ? $name : strtolower($name);
|
||||
$attributes = array();
|
||||
$selfClose = false;
|
||||
|
||||
|
||||
@@ -76,7 +76,6 @@ class TreeBuildingRules
|
||||
case 'option':
|
||||
return $this->closeIfCurrentMatches($new, $current, array(
|
||||
'option',
|
||||
'optgroup'
|
||||
));
|
||||
case 'tr':
|
||||
return $this->closeIfCurrentMatches($new, $current, array(
|
||||
|
||||
@@ -221,7 +221,11 @@ class OutputRules implements \Masterminds\HTML5\Serializer\RulesInterface
|
||||
$this->openTag($ele);
|
||||
if (Elements::isA($name, Elements::TEXT_RAW)) {
|
||||
foreach ($ele->childNodes as $child) {
|
||||
$this->wr($child->data);
|
||||
if ($child instanceof \DOMCharacterData) {
|
||||
$this->wr($child->data);
|
||||
} elseif ($child instanceof \DOMElement) {
|
||||
$this->element($child);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Handle children.
|
||||
|
||||
Reference in New Issue
Block a user