Update core 8.3.0

This commit is contained in:
Rob Davies 2017-04-13 15:53:35 +01:00
parent da7a7918f8
commit cd7a898e66
6144 changed files with 132297 additions and 87747 deletions

View file

@ -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

View file

@ -36,7 +36,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "2.1-dev"
"dev-master": "2.2-dev"
}
}
}

View file

@ -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();

View file

@ -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;

View file

@ -76,7 +76,6 @@ class TreeBuildingRules
case 'option':
return $this->closeIfCurrentMatches($new, $current, array(
'option',
'optgroup'
));
case 'tr':
return $this->closeIfCurrentMatches($new, $current, array(

View file

@ -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.