From ef1c0e852c92e3f852412114131032ed86c56190 Mon Sep 17 00:00:00 2001 From: Andrew Duthie Date: Fri, 25 Jan 2019 11:31:26 -0500 Subject: [PATCH] Spec Parser: Move generated spec parser to package (#13493) * Spec Parser: Move generated spec parser to package * Spec Parser: Add empty npmignore * Spec Parser: Add CHANGELOG entry --- bin/run-wp-unit-tests.sh | 13 - lib/parser.php | 1681 ---------------- .../.gitignore | 3 + .../.npmignore | 2 + .../CHANGELOG.md | 4 + .../bin}/create-php-parser.js | 4 +- .../package.json | 4 +- .../block-serialization-spec-parser/parser.js | 1791 ----------------- .../test/test-parser.php | 2 +- phpcs.xml.dist | 2 +- 10 files changed, 16 insertions(+), 3490 deletions(-) delete mode 100644 lib/parser.php create mode 100644 packages/block-serialization-spec-parser/.gitignore create mode 100644 packages/block-serialization-spec-parser/.npmignore rename {bin => packages/block-serialization-spec-parser/bin}/create-php-parser.js (71%) delete mode 100644 packages/block-serialization-spec-parser/parser.js diff --git a/bin/run-wp-unit-tests.sh b/bin/run-wp-unit-tests.sh index 8c426abd233a1..8e1ee81db79e3 100755 --- a/bin/run-wp-unit-tests.sh +++ b/bin/run-wp-unit-tests.sh @@ -21,16 +21,6 @@ fi npm run build || exit 1 -# Make sure phpegjs parser is up to date -node bin/create-php-parser.js || exit 1 -if ! git diff --quiet --exit-code lib/parser.php; then - echo 'ERROR: The PEG parser has been updated, but the generated PHP version' - echo ' (lib/parser.php) has not. Run `bin/create-php-parser.js` and' - echo ' commit the resulting changes to resolve this.' - sleep .2 # Otherwise Travis doesn't want to print the whole message - exit 1 -fi - echo Running with the following versions: if [[ $DOCKER = "true" ]]; then docker-compose $DOCKER_COMPOSE_FILE_OPTIONS run --rm wordpress_phpunit php -v @@ -40,9 +30,6 @@ else phpunit --version fi -# Check parser syntax -php lib/parser.php || exit 1 - # Run PHPUnit tests if [[ $DOCKER = "true" ]]; then npm run test-php || exit 1 diff --git a/lib/parser.php b/lib/parser.php deleted file mode 100644 index 8fbcaa19bb458..0000000000000 --- a/lib/parser.php +++ /dev/null @@ -1,1681 +0,0 @@ -= $range[0] && $code <= $range[1]) { - return true; - } - } - return false; - } -} - -/* Syntax error exception */ -if (!class_exists("Gutenberg_PEG_SyntaxError", false)) { - class Gutenberg_PEG_SyntaxError extends Exception { - public $expected; - public $found; - public $grammarOffset; - public $grammarLine; - public $grammarColumn; - public $name; - public function __construct($message, $expected, $found, $offset, $line, $column) { - parent::__construct($message, 0); - $this->expected = $expected; - $this->found = $found; - $this->grammarOffset = $offset; - $this->grammarLine = $line; - $this->grammarColumn = $column; - $this->name = "Gutenberg_PEG_SyntaxError"; - } - } -} - -class Gutenberg_PEG_Parser { - private $peg_currPos = 0; - private $peg_reportedPos = 0; - private $peg_cachedPos = 0; - private $peg_cachedPosDetails = array('line' => 1, 'column' => 1, 'seenCR' => false ); - private $peg_maxFailPos = 0; - private $peg_maxFailExpected = array(); - private $peg_silentFails = 0; - private $input = array(); - private $input_length = 0; - - private function cleanup_state() { - $this->peg_currPos = 0; - $this->peg_reportedPos = 0; - $this->peg_cachedPos = 0; - $this->peg_cachedPosDetails = array('line' => 1, 'column' => 1, 'seenCR' => false ); - $this->peg_maxFailPos = 0; - $this->peg_maxFailExpected = array(); - $this->peg_silentFails = 0; - $this->input = array(); - $this->input_length = 0; - - } - - private function input_substr($start, $length) { - if ($length === 1 && $start < $this->input_length) { - return $this->input[$start]; - } - $substr = ''; - $max = min($start + $length, $this->input_length); - for ($i = $start; $i < $max; $i++) { - $substr .= $this->input[$i]; - } - return $substr; - } - - - private function text() { - return substr($this->input, $this->peg_reportedPos, $this->peg_reportedPos + $this->peg_currPos); - } - - private function offset() { - return $this->peg_reportedPos; - } - - private function line() { - $compute_pd = $this->peg_computePosDetails($this->peg_reportedPos); - return $compute_pd["line"]; - } - - private function column() { - $compute_pd = $this->peg_computePosDetails($this->peg_reportedPos); - return $compute_pd["column"]; - } - - private function expected($description) { - throw $this->peg_buildException( - null, - array(array("type" => "other", "description" => $description )), - $this->peg_reportedPos - ); - } - - private function error($message) { - throw $this->peg_buildException($message, null, $this->peg_reportedPos); - } - - private function peg_advancePos(&$details, $startPos, $endPos) { - for ($p = $startPos; $p < $endPos; $p++) { - $ch = $this->input_substr($p, 1); - if ($ch === "\n") { - if (!$details["seenCR"]) { $details["line"]++; } - $details["column"] = 1; - $details["seenCR"] = false; - } else if ($ch === "\r" || $ch === "\u2028" || $ch === "\u2029") { - $details["line"]++; - $details["column"] = 1; - $details["seenCR"] = true; - } else { - $details["column"]++; - $details["seenCR"] = false; - } - } - } - - private function peg_computePosDetails($pos) { - if ($this->peg_cachedPos !== $pos) { - if ($this->peg_cachedPos > $pos) { - $this->peg_cachedPos = 0; - $this->peg_cachedPosDetails = array( "line" => 1, "column" => 1, "seenCR" => false ); - } - $this->peg_advancePos($this->peg_cachedPosDetails, $this->peg_cachedPos, $pos); - $this->peg_cachedPos = $pos; - } - - return $this->peg_cachedPosDetails; - } - - private function peg_fail($expected) { - if ($this->peg_currPos < $this->peg_maxFailPos) { return; } - - if ($this->peg_currPos > $this->peg_maxFailPos) { - $this->peg_maxFailPos = $this->peg_currPos; - $this->peg_maxFailExpected = array(); - } - - $this->peg_maxFailExpected[] = $expected; - } - - private function peg_buildException_expectedComparator($a, $b) { - if ($a["description"] < $b["description"]) { - return -1; - } else if ($a["description"] > $b["description"]) { - return 1; - } else { - return 0; - } - } - - private function peg_buildException($message, $expected, $pos) { - $posDetails = $this->peg_computePosDetails($pos); - $found = $pos < $this->input_length ? $this->input[$pos] : null; - - if ($expected !== null) { - usort($expected, array($this, "peg_buildException_expectedComparator")); - $i = 1; - while ($i < count($expected)) { - if ($expected[$i - 1] === $expected[$i]) { - array_splice($expected, $i, 1); - } else { - $i++; - } - } - } - - if ($message === null) { - $expectedDescs = array_fill(0, count($expected), null); - - for ($i = 0; $i < count($expected); $i++) { - $expectedDescs[$i] = $expected[$i]["description"]; - } - - $expectedDesc = count($expected) > 1 - ? join(", ", array_slice($expectedDescs, 0, -1)) - . " or " - . $expectedDescs[count($expected) - 1] - : $expectedDescs[0]; - - $foundDesc = $found ? json_encode($found) : "end of input"; - - $message = "Expected " . $expectedDesc . " but " . $foundDesc . " found."; - } - - return new Gutenberg_PEG_SyntaxError( - $message, - $expected, - $found, - $pos, - $posDetails["line"], - $posDetails["column"] - ); - } - - private $peg_FAILED; - private $peg_c0; - private $peg_c1; - private $peg_c2; - private $peg_c3; - private $peg_c4; - private $peg_c5; - private $peg_c6; - private $peg_c7; - private $peg_c8; - private $peg_c9; - private $peg_c10; - private $peg_c11; - private $peg_c12; - private $peg_c13; - private $peg_c14; - private $peg_c15; - private $peg_c16; - private $peg_c17; - private $peg_c18; - private $peg_c19; - private $peg_c20; - private $peg_c21; - private $peg_c22; - private $peg_c23; - private $peg_c24; - - private function peg_f0($pre, $b, $html) { return array( $b, $html ); } - private function peg_f1($pre, $bs, $post) { return peg_join_blocks( $pre, $bs, $post ); } - private function peg_f2($blockName, $a) { return $a; } - private function peg_f3($blockName, $attrs) { - return array( - 'blockName' => $blockName, - 'attrs' => empty( $attrs ) ? peg_empty_attrs() : $attrs, - 'innerBlocks' => array(), - 'innerHTML' => '', - 'innerContent' => array(), - ); - } - private function peg_f4($s, $children, $e) { - list( $innerHTML, $innerBlocks, $innerContent ) = peg_process_inner_content( $children ); - - return array( - 'blockName' => $s['blockName'], - 'attrs' => empty( $s['attrs'] ) ? peg_empty_attrs() : $s['attrs'], - 'innerBlocks' => $innerBlocks, - 'innerHTML' => $innerHTML, - 'innerContent' => $innerContent, - ); - } - private function peg_f5($blockName, $attrs) { - return array( - 'blockName' => $blockName, - 'attrs' => isset( $attrs ) ? $attrs : array(), - ); - } - private function peg_f6($blockName) { - return array( - 'blockName' => $blockName, - ); - } - private function peg_f7($type) { return "core/$type"; } - private function peg_f8($attrs) { return json_decode( $attrs, true ); } - - private function peg_parseBlock_List() { - - $s0 = $this->peg_currPos; - $s1 = $this->peg_currPos; - $s2 = array(); - $s3 = $this->peg_currPos; - $s4 = $this->peg_currPos; - $this->peg_silentFails++; - $s5 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s5 === $this->peg_FAILED) { - $s4 = null; - } else { - $this->peg_currPos = $s4; - $s4 = $this->peg_FAILED; - } - if ($s4 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s5 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s5 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s5 !== $this->peg_FAILED) { - $s4 = array($s4, $s5); - $s3 = $s4; - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - while ($s3 !== $this->peg_FAILED) { - $s2[] = $s3; - $s3 = $this->peg_currPos; - $s4 = $this->peg_currPos; - $this->peg_silentFails++; - $s5 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s5 === $this->peg_FAILED) { - $s4 = null; - } else { - $this->peg_currPos = $s4; - $s4 = $this->peg_FAILED; - } - if ($s4 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s5 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s5 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s5 !== $this->peg_FAILED) { - $s4 = array($s4, $s5); - $s3 = $s4; - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } - if ($s2 !== $this->peg_FAILED) { - $s1 = $this->input_substr($s1, $this->peg_currPos - $s1); - } else { - $s1 = $s2; - } - if ($s1 !== $this->peg_FAILED) { - $s2 = array(); - $s3 = $this->peg_currPos; - $s4 = $this->peg_parseBlock(); - if ($s4 !== $this->peg_FAILED) { - $s5 = $this->peg_currPos; - $s6 = array(); - $s7 = $this->peg_currPos; - $s8 = $this->peg_currPos; - $this->peg_silentFails++; - $s9 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s9 === $this->peg_FAILED) { - $s8 = null; - } else { - $this->peg_currPos = $s8; - $s8 = $this->peg_FAILED; - } - if ($s8 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s9 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s9 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s9 !== $this->peg_FAILED) { - $s8 = array($s8, $s9); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - while ($s7 !== $this->peg_FAILED) { - $s6[] = $s7; - $s7 = $this->peg_currPos; - $s8 = $this->peg_currPos; - $this->peg_silentFails++; - $s9 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s9 === $this->peg_FAILED) { - $s8 = null; - } else { - $this->peg_currPos = $s8; - $s8 = $this->peg_FAILED; - } - if ($s8 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s9 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s9 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s9 !== $this->peg_FAILED) { - $s8 = array($s8, $s9); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } - if ($s6 !== $this->peg_FAILED) { - $s5 = $this->input_substr($s5, $this->peg_currPos - $s5); - } else { - $s5 = $s6; - } - if ($s5 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s3; - $s4 = $this->peg_f0($s1, $s4, $s5); - $s3 = $s4; - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - while ($s3 !== $this->peg_FAILED) { - $s2[] = $s3; - $s3 = $this->peg_currPos; - $s4 = $this->peg_parseBlock(); - if ($s4 !== $this->peg_FAILED) { - $s5 = $this->peg_currPos; - $s6 = array(); - $s7 = $this->peg_currPos; - $s8 = $this->peg_currPos; - $this->peg_silentFails++; - $s9 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s9 === $this->peg_FAILED) { - $s8 = null; - } else { - $this->peg_currPos = $s8; - $s8 = $this->peg_FAILED; - } - if ($s8 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s9 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s9 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s9 !== $this->peg_FAILED) { - $s8 = array($s8, $s9); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - while ($s7 !== $this->peg_FAILED) { - $s6[] = $s7; - $s7 = $this->peg_currPos; - $s8 = $this->peg_currPos; - $this->peg_silentFails++; - $s9 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s9 === $this->peg_FAILED) { - $s8 = null; - } else { - $this->peg_currPos = $s8; - $s8 = $this->peg_FAILED; - } - if ($s8 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s9 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s9 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s9 !== $this->peg_FAILED) { - $s8 = array($s8, $s9); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } - if ($s6 !== $this->peg_FAILED) { - $s5 = $this->input_substr($s5, $this->peg_currPos - $s5); - } else { - $s5 = $s6; - } - if ($s5 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s3; - $s4 = $this->peg_f0($s1, $s4, $s5); - $s3 = $s4; - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s3; - $s3 = $this->peg_FAILED; - } - } - if ($s2 !== $this->peg_FAILED) { - $s3 = $this->peg_currPos; - $s4 = array(); - if ($this->input_length > $this->peg_currPos) { - $s5 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s5 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - while ($s5 !== $this->peg_FAILED) { - $s4[] = $s5; - if ($this->input_length > $this->peg_currPos) { - $s5 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s5 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - } - if ($s4 !== $this->peg_FAILED) { - $s3 = $this->input_substr($s3, $this->peg_currPos - $s3); - } else { - $s3 = $s4; - } - if ($s3 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f1($s1, $s2, $s3); - $s0 = $s1; - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - private function peg_parseBlock() { - - $s0 = $this->peg_parseBlock_Void(); - if ($s0 === $this->peg_FAILED) { - $s0 = $this->peg_parseBlock_Balanced(); - } - - return $s0; - } - - private function peg_parseBlock_Void() { - - $s0 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) { - $s1 = $this->peg_c1; - $this->peg_currPos += 4; - } else { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c2); - } - } - if ($s1 !== $this->peg_FAILED) { - $s2 = $this->peg_parse__(); - if ($s2 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c3) { - $s3 = $this->peg_c3; - $this->peg_currPos += 3; - } else { - $s3 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c4); - } - } - if ($s3 !== $this->peg_FAILED) { - $s4 = $this->peg_parseBlock_Name(); - if ($s4 !== $this->peg_FAILED) { - $s5 = $this->peg_parse__(); - if ($s5 !== $this->peg_FAILED) { - $s6 = $this->peg_currPos; - $s7 = $this->peg_parseBlock_Attributes(); - if ($s7 !== $this->peg_FAILED) { - $s8 = $this->peg_parse__(); - if ($s8 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s6; - $s7 = $this->peg_f2($s4, $s7); - $s6 = $s7; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 === $this->peg_FAILED) { - $s6 = null; - } - if ($s6 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c5) { - $s7 = $this->peg_c5; - $this->peg_currPos += 4; - } else { - $s7 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c6); - } - } - if ($s7 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f3($s4, $s6); - $s0 = $s1; - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - private function peg_parseBlock_Balanced() { - - $s0 = $this->peg_currPos; - $s1 = $this->peg_parseBlock_Start(); - if ($s1 !== $this->peg_FAILED) { - $s2 = array(); - $s3 = $this->peg_parseBlock(); - if ($s3 === $this->peg_FAILED) { - $s3 = $this->peg_currPos; - $s4 = array(); - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - $s7 = $this->peg_currPos; - $this->peg_silentFails++; - $s8 = $this->peg_parseBlock_End(); - $this->peg_silentFails--; - if ($s8 === $this->peg_FAILED) { - $s7 = null; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - if ($s7 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s8 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s8 !== $this->peg_FAILED) { - $s6 = array($s6, $s7, $s8); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - if ($s5 !== $this->peg_FAILED) { - while ($s5 !== $this->peg_FAILED) { - $s4[] = $s5; - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - $s7 = $this->peg_currPos; - $this->peg_silentFails++; - $s8 = $this->peg_parseBlock_End(); - $this->peg_silentFails--; - if ($s8 === $this->peg_FAILED) { - $s7 = null; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - if ($s7 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s8 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s8 !== $this->peg_FAILED) { - $s6 = array($s6, $s7, $s8); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } - } else { - $s4 = $this->peg_FAILED; - } - if ($s4 !== $this->peg_FAILED) { - $s3 = $this->input_substr($s3, $this->peg_currPos - $s3); - } else { - $s3 = $s4; - } - } - while ($s3 !== $this->peg_FAILED) { - $s2[] = $s3; - $s3 = $this->peg_parseBlock(); - if ($s3 === $this->peg_FAILED) { - $s3 = $this->peg_currPos; - $s4 = array(); - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - $s7 = $this->peg_currPos; - $this->peg_silentFails++; - $s8 = $this->peg_parseBlock_End(); - $this->peg_silentFails--; - if ($s8 === $this->peg_FAILED) { - $s7 = null; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - if ($s7 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s8 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s8 !== $this->peg_FAILED) { - $s6 = array($s6, $s7, $s8); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - if ($s5 !== $this->peg_FAILED) { - while ($s5 !== $this->peg_FAILED) { - $s4[] = $s5; - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_parseBlock(); - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - $s7 = $this->peg_currPos; - $this->peg_silentFails++; - $s8 = $this->peg_parseBlock_End(); - $this->peg_silentFails--; - if ($s8 === $this->peg_FAILED) { - $s7 = null; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - if ($s7 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s8 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s8 !== $this->peg_FAILED) { - $s6 = array($s6, $s7, $s8); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } - } else { - $s4 = $this->peg_FAILED; - } - if ($s4 !== $this->peg_FAILED) { - $s3 = $this->input_substr($s3, $this->peg_currPos - $s3); - } else { - $s3 = $s4; - } - } - } - if ($s2 !== $this->peg_FAILED) { - $s3 = $this->peg_parseBlock_End(); - if ($s3 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f4($s1, $s2, $s3); - $s0 = $s1; - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - private function peg_parseBlock_Start() { - - $s0 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) { - $s1 = $this->peg_c1; - $this->peg_currPos += 4; - } else { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c2); - } - } - if ($s1 !== $this->peg_FAILED) { - $s2 = $this->peg_parse__(); - if ($s2 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c3) { - $s3 = $this->peg_c3; - $this->peg_currPos += 3; - } else { - $s3 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c4); - } - } - if ($s3 !== $this->peg_FAILED) { - $s4 = $this->peg_parseBlock_Name(); - if ($s4 !== $this->peg_FAILED) { - $s5 = $this->peg_parse__(); - if ($s5 !== $this->peg_FAILED) { - $s6 = $this->peg_currPos; - $s7 = $this->peg_parseBlock_Attributes(); - if ($s7 !== $this->peg_FAILED) { - $s8 = $this->peg_parse__(); - if ($s8 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s6; - $s7 = $this->peg_f2($s4, $s7); - $s6 = $s7; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 === $this->peg_FAILED) { - $s6 = null; - } - if ($s6 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) { - $s7 = $this->peg_c7; - $this->peg_currPos += 3; - } else { - $s7 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c8); - } - } - if ($s7 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f5($s4, $s6); - $s0 = $s1; - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - private function peg_parseBlock_End() { - - $s0 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c1) { - $s1 = $this->peg_c1; - $this->peg_currPos += 4; - } else { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c2); - } - } - if ($s1 !== $this->peg_FAILED) { - $s2 = $this->peg_parse__(); - if ($s2 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 4) === $this->peg_c9) { - $s3 = $this->peg_c9; - $this->peg_currPos += 4; - } else { - $s3 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c10); - } - } - if ($s3 !== $this->peg_FAILED) { - $s4 = $this->peg_parseBlock_Name(); - if ($s4 !== $this->peg_FAILED) { - $s5 = $this->peg_parse__(); - if ($s5 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) { - $s6 = $this->peg_c7; - $this->peg_currPos += 3; - } else { - $s6 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c8); - } - } - if ($s6 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f6($s4); - $s0 = $s1; - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s0; - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - private function peg_parseBlock_Name() { - - $s0 = $this->peg_parseNamespaced_Block_Name(); - if ($s0 === $this->peg_FAILED) { - $s0 = $this->peg_parseCore_Block_Name(); - } - - return $s0; - } - - private function peg_parseNamespaced_Block_Name() { - - $s0 = $this->peg_currPos; - $s1 = $this->peg_currPos; - $s2 = $this->peg_parseBlock_Name_Part(); - if ($s2 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) { - $s3 = $this->peg_c11; - $this->peg_currPos++; - } else { - $s3 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c12); - } - } - if ($s3 !== $this->peg_FAILED) { - $s4 = $this->peg_parseBlock_Name_Part(); - if ($s4 !== $this->peg_FAILED) { - $s2 = array($s2, $s3, $s4); - $s1 = $s2; - } else { - $this->peg_currPos = $s1; - $s1 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s1; - $s1 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s1; - $s1 = $this->peg_FAILED; - } - if ($s1 !== $this->peg_FAILED) { - $s0 = $this->input_substr($s0, $this->peg_currPos - $s0); - } else { - $s0 = $s1; - } - - return $s0; - } - - private function peg_parseCore_Block_Name() { - - $s0 = $this->peg_currPos; - $s1 = $this->peg_currPos; - $s2 = $this->peg_parseBlock_Name_Part(); - if ($s2 !== $this->peg_FAILED) { - $s1 = $this->input_substr($s1, $this->peg_currPos - $s1); - } else { - $s1 = $s2; - } - if ($s1 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f7($s1); - } - $s0 = $s1; - - return $s0; - } - - private function peg_parseBlock_Name_Part() { - - $s0 = $this->peg_currPos; - $s1 = $this->peg_currPos; - if (Gutenberg_PEG_peg_char_class_test($this->peg_c13, $this->input_substr($this->peg_currPos, 1))) { - $s2 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s2 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c14); - } - } - if ($s2 !== $this->peg_FAILED) { - $s3 = array(); - if (Gutenberg_PEG_peg_char_class_test($this->peg_c15, $this->input_substr($this->peg_currPos, 1))) { - $s4 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s4 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c16); - } - } - while ($s4 !== $this->peg_FAILED) { - $s3[] = $s4; - if (Gutenberg_PEG_peg_char_class_test($this->peg_c15, $this->input_substr($this->peg_currPos, 1))) { - $s4 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s4 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c16); - } - } - } - if ($s3 !== $this->peg_FAILED) { - $s2 = array($s2, $s3); - $s1 = $s2; - } else { - $this->peg_currPos = $s1; - $s1 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s1; - $s1 = $this->peg_FAILED; - } - if ($s1 !== $this->peg_FAILED) { - $s0 = $this->input_substr($s0, $this->peg_currPos - $s0); - } else { - $s0 = $s1; - } - - return $s0; - } - - private function peg_parseBlock_Attributes() { - - $this->peg_silentFails++; - $s0 = $this->peg_currPos; - $s1 = $this->peg_currPos; - $s2 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c18) { - $s3 = $this->peg_c18; - $this->peg_currPos++; - } else { - $s3 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c19); - } - } - if ($s3 !== $this->peg_FAILED) { - $s4 = array(); - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) { - $s8 = $this->peg_c20; - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c21); - } - } - if ($s8 !== $this->peg_FAILED) { - $s9 = $this->peg_parse__(); - if ($s9 !== $this->peg_FAILED) { - $s10 = $this->peg_c22; - if ($s10 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) { - $s11 = $this->peg_c11; - $this->peg_currPos++; - } else { - $s11 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c12); - } - } - if ($s11 === $this->peg_FAILED) { - $s11 = null; - } - if ($s11 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) { - $s12 = $this->peg_c7; - $this->peg_currPos += 3; - } else { - $s12 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c8); - } - } - if ($s12 !== $this->peg_FAILED) { - $s8 = array($s8, $s9, $s10, $s11, $s12); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s7 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s7 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s7 !== $this->peg_FAILED) { - $s6 = array($s6, $s7); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - while ($s5 !== $this->peg_FAILED) { - $s4[] = $s5; - $s5 = $this->peg_currPos; - $s6 = $this->peg_currPos; - $this->peg_silentFails++; - $s7 = $this->peg_currPos; - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) { - $s8 = $this->peg_c20; - $this->peg_currPos++; - } else { - $s8 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c21); - } - } - if ($s8 !== $this->peg_FAILED) { - $s9 = $this->peg_parse__(); - if ($s9 !== $this->peg_FAILED) { - $s10 = $this->peg_c22; - if ($s10 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c11) { - $s11 = $this->peg_c11; - $this->peg_currPos++; - } else { - $s11 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c12); - } - } - if ($s11 === $this->peg_FAILED) { - $s11 = null; - } - if ($s11 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 3) === $this->peg_c7) { - $s12 = $this->peg_c7; - $this->peg_currPos += 3; - } else { - $s12 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c8); - } - } - if ($s12 !== $this->peg_FAILED) { - $s8 = array($s8, $s9, $s10, $s11, $s12); - $s7 = $s8; - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s7; - $s7 = $this->peg_FAILED; - } - $this->peg_silentFails--; - if ($s7 === $this->peg_FAILED) { - $s6 = null; - } else { - $this->peg_currPos = $s6; - $s6 = $this->peg_FAILED; - } - if ($s6 !== $this->peg_FAILED) { - if ($this->input_length > $this->peg_currPos) { - $s7 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s7 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c0); - } - } - if ($s7 !== $this->peg_FAILED) { - $s6 = array($s6, $s7); - $s5 = $s6; - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s5; - $s5 = $this->peg_FAILED; - } - } - if ($s4 !== $this->peg_FAILED) { - if ($this->input_substr($this->peg_currPos, 1) === $this->peg_c20) { - $s5 = $this->peg_c20; - $this->peg_currPos++; - } else { - $s5 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c21); - } - } - if ($s5 !== $this->peg_FAILED) { - $s3 = array($s3, $s4, $s5); - $s2 = $s3; - } else { - $this->peg_currPos = $s2; - $s2 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s2; - $s2 = $this->peg_FAILED; - } - } else { - $this->peg_currPos = $s2; - $s2 = $this->peg_FAILED; - } - if ($s2 !== $this->peg_FAILED) { - $s1 = $this->input_substr($s1, $this->peg_currPos - $s1); - } else { - $s1 = $s2; - } - if ($s1 !== $this->peg_FAILED) { - $this->peg_reportedPos = $s0; - $s1 = $this->peg_f8($s1); - } - $s0 = $s1; - $this->peg_silentFails--; - if ($s0 === $this->peg_FAILED) { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c17); - } - } - - return $s0; - } - - private function peg_parse__() { - - $s0 = array(); - if (Gutenberg_PEG_peg_char_class_test($this->peg_c23, $this->input_substr($this->peg_currPos, 1))) { - $s1 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c24); - } - } - if ($s1 !== $this->peg_FAILED) { - while ($s1 !== $this->peg_FAILED) { - $s0[] = $s1; - if (Gutenberg_PEG_peg_char_class_test($this->peg_c23, $this->input_substr($this->peg_currPos, 1))) { - $s1 = $this->input_substr($this->peg_currPos, 1); - $this->peg_currPos++; - } else { - $s1 = $this->peg_FAILED; - if ($this->peg_silentFails === 0) { - $this->peg_fail($this->peg_c24); - } - } - } - } else { - $s0 = $this->peg_FAILED; - } - - return $s0; - } - - public function parse($input) { - $arguments = func_get_args(); - $options = count($arguments) > 1 ? $arguments[1] : array(); - $this->cleanup_state(); - - if (is_array($input)) { - $this->input = $input; - } else { - preg_match_all("/./us", $input, $match); - $this->input = $match[0]; - } - $this->input_length = count($this->input); - - $this->peg_FAILED = new stdClass; - $this->peg_c0 = array("type" => "any", "description" => "any character" ); - $this->peg_c1 = ""; - $this->peg_c6 = array( "type" => "literal", "value" => "/-->", "description" => "\"/-->\"" ); - $this->peg_c7 = "-->"; - $this->peg_c8 = array( "type" => "literal", "value" => "-->", "description" => "\"-->\"" ); - $this->peg_c9 = "/wp:"; - $this->peg_c10 = array( "type" => "literal", "value" => "/wp:", "description" => "\"/wp:\"" ); - $this->peg_c11 = "/"; - $this->peg_c12 = array( "type" => "literal", "value" => "/", "description" => "\"/\"" ); - $this->peg_c13 = array(array(97,122)); - $this->peg_c14 = array( "type" => "class", "value" => "[a-z]", "description" => "[a-z]" ); - $this->peg_c15 = array(array(97,122), array(48,57), array(95,95), array(45,45)); - $this->peg_c16 = array( "type" => "class", "value" => "[a-z0-9_-]", "description" => "[a-z0-9_-]" ); - $this->peg_c17 = array("type" => "other", "description" => "JSON-encoded attributes embedded in a block's opening comment" ); - $this->peg_c18 = "{"; - $this->peg_c19 = array( "type" => "literal", "value" => "{", "description" => "\"{\"" ); - $this->peg_c20 = "}"; - $this->peg_c21 = array( "type" => "literal", "value" => "}", "description" => "\"}\"" ); - $this->peg_c22 = ""; - $this->peg_c23 = array(array(32,32), array(9,9), array(13,13), array(10,10)); - $this->peg_c24 = array( "type" => "class", "value" => "[ \t\r\n]", "description" => "[ \t\r\n]" ); - - $peg_startRuleFunctions = array( 'Block_List' => array($this, "peg_parseBlock_List") ); - $peg_startRuleFunction = array($this, "peg_parseBlock_List"); - if (isset($options["startRule"])) { - if (!(isset($peg_startRuleFunctions[$options["startRule"]]))) { - throw new Exception("Can't start parsing from rule \"" + $options["startRule"] + "\"."); - } - - $peg_startRuleFunction = $peg_startRuleFunctions[$options["startRule"]]; - } - - /* BEGIN initializer code */ - - // The `maybeJSON` function is not needed in PHP because its return semantics - // are the same as `json_decode` - - if ( ! function_exists( 'peg_empty_attrs' ) ) { - function peg_empty_attrs() { - static $empty_attrs = null; - - if ( null === $empty_attrs ) { - $empty_attrs = json_decode( '{}', true ); - } - - return $empty_attrs; - } - } - - // array arguments are backwards because of PHP - if ( ! function_exists( 'peg_process_inner_content' ) ) { - function peg_process_inner_content( $array ) { - $html = ''; - $blocks = array(); - $content = array(); - - foreach ( $array as $item ) { - if ( is_string( $item ) ) { - $html .= $item; - $content[] = $item; - } else { - $blocks[] = $item; - $content[] = null; - } - } - - return array( $html, $blocks, $content ); - } - } - - if ( ! function_exists( 'peg_join_blocks' ) ) { - function peg_join_blocks( $pre, $tokens, $post ) { - $blocks = array(); - - if ( ! empty( $pre ) ) { - $blocks[] = array( - 'blockName' => null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $pre, - 'innerContent' => array( $pre ), - ); - } - - foreach ( $tokens as $token ) { - list( $token, $html ) = $token; - - $blocks[] = $token; - - if ( ! empty( $html ) ) { - $blocks[] = array( - 'blockName' => null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $html, - 'innerContent' => array( $html ), - ); - } - } - - if ( ! empty( $post ) ) { - $blocks[] = array( - 'blockName' => null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $post, - 'innerContent' => array( $post ), - ); - } - - return $blocks; - } - } - - - /* END initializer code */ - - $peg_result = call_user_func($peg_startRuleFunction); - - if ($peg_result !== $this->peg_FAILED && $this->peg_currPos === $this->input_length) { - $this->cleanup_state(); // Free up memory - return $peg_result; - } else { - if ($peg_result !== $this->peg_FAILED && $this->peg_currPos < $this->input_length) { - $this->peg_fail(array("type" => "end", "description" => "end of input" )); - } - - $exception = $this->peg_buildException(null, $this->peg_maxFailExpected, $this->peg_maxFailPos); - $this->cleanup_state(); // Free up memory - throw $exception; - } - } - -}; \ No newline at end of file diff --git a/packages/block-serialization-spec-parser/.gitignore b/packages/block-serialization-spec-parser/.gitignore new file mode 100644 index 0000000000000..9fd357b5956f0 --- /dev/null +++ b/packages/block-serialization-spec-parser/.gitignore @@ -0,0 +1,3 @@ +# Build Artifacts +parser.js +parser.php diff --git a/packages/block-serialization-spec-parser/.npmignore b/packages/block-serialization-spec-parser/.npmignore new file mode 100644 index 0000000000000..efd9db21d6ec0 --- /dev/null +++ b/packages/block-serialization-spec-parser/.npmignore @@ -0,0 +1,2 @@ +# Intentionally empty, to avoid inheriting from `.gitignore`, since `parser.js` +# and `parser.php` should be included with the npm distributable. diff --git a/packages/block-serialization-spec-parser/CHANGELOG.md b/packages/block-serialization-spec-parser/CHANGELOG.md index c2db52c417908..e4f403ffd6849 100644 --- a/packages/block-serialization-spec-parser/CHANGELOG.md +++ b/packages/block-serialization-spec-parser/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.0 (Unreleased) + +- A `parser.php` file generated from the PEGJS grammar is now included. + ## 2.0.2 (2018-12-12) ## 2.0.1 (2018-11-30) diff --git a/bin/create-php-parser.js b/packages/block-serialization-spec-parser/bin/create-php-parser.js similarity index 71% rename from bin/create-php-parser.js rename to packages/block-serialization-spec-parser/bin/create-php-parser.js index 0d661ff0f906b..c9e48a200fa48 100755 --- a/bin/create-php-parser.js +++ b/packages/block-serialization-spec-parser/bin/create-php-parser.js @@ -5,7 +5,7 @@ const phpegjs = require( 'phpegjs' ); const fs = require( 'fs' ); const path = require( 'path' ); -const peg = fs.readFileSync( 'packages/block-serialization-spec-parser/grammar.pegjs', 'utf8' ); +const peg = fs.readFileSync( path.join( __dirname, '..', 'grammar.pegjs' ), 'utf8' ); const parser = pegjs.generate( peg, @@ -20,6 +20,6 @@ const parser = pegjs.generate( ); fs.writeFileSync( - path.join( __dirname, '..', 'lib', 'parser.php' ), + path.join( __dirname, '..', 'parser.php' ), parser ); diff --git a/packages/block-serialization-spec-parser/package.json b/packages/block-serialization-spec-parser/package.json index 16ca515258977..918c269169f09 100644 --- a/packages/block-serialization-spec-parser/package.json +++ b/packages/block-serialization-spec-parser/package.json @@ -22,6 +22,8 @@ "access": "public" }, "scripts": { - "build": "pegjs --format umd -o ./parser.js ./grammar.pegjs" + "build": "concurrently \"npm run build:js\" \"npm run build:php\"", + "build:js": "pegjs --format umd -o ./parser.js ./grammar.pegjs", + "build:php": "node bin/create-php-parser.js" } } diff --git a/packages/block-serialization-spec-parser/parser.js b/packages/block-serialization-spec-parser/parser.js deleted file mode 100644 index be39ccaa3046d..0000000000000 --- a/packages/block-serialization-spec-parser/parser.js +++ /dev/null @@ -1,1791 +0,0 @@ -/* - * Generated by PEG.js 0.10.0. - * - * http://pegjs.org/ - */ -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([], factory); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(); - } -})(this, function() { - "use strict"; - - function peg$subclass(child, parent) { - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor(); - } - - function peg$SyntaxError(message, expected, found, location) { - this.message = message; - this.expected = expected; - this.found = found; - this.location = location; - this.name = "SyntaxError"; - - if (typeof Error.captureStackTrace === "function") { - Error.captureStackTrace(this, peg$SyntaxError); - } - } - - peg$subclass(peg$SyntaxError, Error); - - peg$SyntaxError.buildMessage = function(expected, found) { - var DESCRIBE_EXPECTATION_FNS = { - literal: function(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, - - "class": function(expectation) { - var escapedParts = "", - i; - - for (i = 0; i < expectation.parts.length; i++) { - escapedParts += expectation.parts[i] instanceof Array - ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) - : classEscape(expectation.parts[i]); - } - - return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; - }, - - any: function(expectation) { - return "any character"; - }, - - end: function(expectation) { - return "end of input"; - }, - - other: function(expectation) { - return expectation.description; - } - }; - - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } - - function literalEscape(s) { - return s - .replace(/\\/g, '\\\\') - .replace(/"/g, '\\"') - .replace(/\0/g, '\\0') - .replace(/\t/g, '\\t') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); - } - - function classEscape(s) { - return s - .replace(/\\/g, '\\\\') - .replace(/\]/g, '\\]') - .replace(/\^/g, '\\^') - .replace(/-/g, '\\-') - .replace(/\0/g, '\\0') - .replace(/\t/g, '\\t') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); - } - - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); - } - - function describeExpected(expected) { - var descriptions = new Array(expected.length), - i, j; - - for (i = 0; i < expected.length; i++) { - descriptions[i] = describeExpectation(expected[i]); - } - - descriptions.sort(); - - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } - } - descriptions.length = j; - } - - switch (descriptions.length) { - case 1: - return descriptions[0]; - - case 2: - return descriptions[0] + " or " + descriptions[1]; - - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; - } - } - - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; - } - - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; - }; - - function peg$parse(input, options) { - options = options !== void 0 ? options : {}; - - var peg$FAILED = {}, - - peg$startRuleFunctions = { Block_List: peg$parseBlock_List }, - peg$startRuleFunction = peg$parseBlock_List, - - peg$c0 = peg$anyExpectation(), - peg$c1 = function(pre, b, html) { /** **/ return [ b, html ] }, - peg$c2 = function(pre, bs, post) { /** **/ - return joinBlocks( pre, bs, post ); - }, - peg$c3 = "", - peg$c9 = peg$literalExpectation("/-->", false), - peg$c10 = function(blockName, attrs) { - /** $blockName, - 'attrs' => empty( $attrs ) ? peg_empty_attrs() : $attrs, - 'innerBlocks' => array(), - 'innerHTML' => '', - 'innerContent' => array(), - ); - ?> **/ - - return { - blockName: blockName, - attrs: attrs || {}, - innerBlocks: [], - innerHTML: '', - innerContent: [] - }; - }, - peg$c11 = function(s, children, e) { - /** $s['blockName'], - 'attrs' => empty( $s['attrs'] ) ? peg_empty_attrs() : $s['attrs'], - 'innerBlocks' => $innerBlocks, - 'innerHTML' => $innerHTML, - 'innerContent' => $innerContent, - ); - ?> **/ - - var innerParts = processInnerContent( children ); - var innerHTML = innerParts[ 0 ]; - var innerBlocks = innerParts[ 1 ]; - var innerContent = innerParts[ 2 ]; - - return { - blockName: s.blockName, - attrs: s.attrs, - innerBlocks: innerBlocks, - innerHTML: innerHTML, - innerContent: innerContent, - }; - }, - peg$c12 = "-->", - peg$c13 = peg$literalExpectation("-->", false), - peg$c14 = function(blockName, attrs) { - /** $blockName, - 'attrs' => isset( $attrs ) ? $attrs : array(), - ); - ?> **/ - - return { - blockName: blockName, - attrs: attrs || {} - }; - }, - peg$c15 = "/wp:", - peg$c16 = peg$literalExpectation("/wp:", false), - peg$c17 = function(blockName) { - /** $blockName, - ); - ?> **/ - - return { - blockName: blockName - }; - }, - peg$c18 = "/", - peg$c19 = peg$literalExpectation("/", false), - peg$c20 = function(type) { - /** **/ - return 'core/' + type; - }, - peg$c21 = /^[a-z]/, - peg$c22 = peg$classExpectation([["a", "z"]], false, false), - peg$c23 = /^[a-z0-9_\-]/, - peg$c24 = peg$classExpectation([["a", "z"], ["0", "9"], "_", "-"], false, false), - peg$c25 = peg$otherExpectation("JSON-encoded attributes embedded in a block's opening comment"), - peg$c26 = "{", - peg$c27 = peg$literalExpectation("{", false), - peg$c28 = "}", - peg$c29 = peg$literalExpectation("}", false), - peg$c30 = "", - peg$c31 = function(attrs) { - /** **/ - return maybeJSON( attrs ); - }, - peg$c32 = /^[ \t\r\n]/, - peg$c33 = peg$classExpectation([" ", "\t", "\r", "\n"], false, false), - - peg$currPos = 0, - peg$savedPos = 0, - peg$posDetailsCache = [{ line: 1, column: 1 }], - peg$maxFailPos = 0, - peg$maxFailExpected = [], - peg$silentFails = 0, - - peg$result; - - if ("startRule" in options) { - if (!(options.startRule in peg$startRuleFunctions)) { - throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); - } - - peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; - } - - function text() { - return input.substring(peg$savedPos, peg$currPos); - } - - function location() { - return peg$computeLocation(peg$savedPos, peg$currPos); - } - - function expected(description, location) { - location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) - - throw peg$buildStructuredError( - [peg$otherExpectation(description)], - input.substring(peg$savedPos, peg$currPos), - location - ); - } - - function error(message, location) { - location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos) - - throw peg$buildSimpleError(message, location); - } - - function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text: text, ignoreCase: ignoreCase }; - } - - function peg$classExpectation(parts, inverted, ignoreCase) { - return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; - } - - function peg$anyExpectation() { - return { type: "any" }; - } - - function peg$endExpectation() { - return { type: "end" }; - } - - function peg$otherExpectation(description) { - return { type: "other", description: description }; - } - - function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos], p; - - if (details) { - return details; - } else { - p = pos - 1; - while (!peg$posDetailsCache[p]) { - p--; - } - - details = peg$posDetailsCache[p]; - details = { - line: details.line, - column: details.column - }; - - while (p < pos) { - if (input.charCodeAt(p) === 10) { - details.line++; - details.column = 1; - } else { - details.column++; - } - - p++; - } - - peg$posDetailsCache[pos] = details; - return details; - } - } - - function peg$computeLocation(startPos, endPos) { - var startPosDetails = peg$computePosDetails(startPos), - endPosDetails = peg$computePosDetails(endPos); - - return { - start: { - offset: startPos, - line: startPosDetails.line, - column: startPosDetails.column - }, - end: { - offset: endPos, - line: endPosDetails.line, - column: endPosDetails.column - } - }; - } - - function peg$fail(expected) { - if (peg$currPos < peg$maxFailPos) { return; } - - if (peg$currPos > peg$maxFailPos) { - peg$maxFailPos = peg$currPos; - peg$maxFailExpected = []; - } - - peg$maxFailExpected.push(expected); - } - - function peg$buildSimpleError(message, location) { - return new peg$SyntaxError(message, null, null, location); - } - - function peg$buildStructuredError(expected, found, location) { - return new peg$SyntaxError( - peg$SyntaxError.buildMessage(expected, found), - expected, - found, - location - ); - } - - function peg$parseBlock_List() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - - s0 = peg$currPos; - s1 = peg$currPos; - s2 = []; - s3 = peg$currPos; - s4 = peg$currPos; - peg$silentFails++; - s5 = peg$parseBlock(); - peg$silentFails--; - if (s5 === peg$FAILED) { - s4 = void 0; - } else { - peg$currPos = s4; - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - if (input.length > peg$currPos) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$currPos; - peg$silentFails++; - s5 = peg$parseBlock(); - peg$silentFails--; - if (s5 === peg$FAILED) { - s4 = void 0; - } else { - peg$currPos = s4; - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - if (input.length > peg$currPos) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s5 !== peg$FAILED) { - s4 = [s4, s5]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$currPos; - s4 = peg$parseBlock(); - if (s4 !== peg$FAILED) { - s5 = peg$currPos; - s6 = []; - s7 = peg$currPos; - s8 = peg$currPos; - peg$silentFails++; - s9 = peg$parseBlock(); - peg$silentFails--; - if (s9 === peg$FAILED) { - s8 = void 0; - } else { - peg$currPos = s8; - s8 = peg$FAILED; - } - if (s8 !== peg$FAILED) { - if (input.length > peg$currPos) { - s9 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s9 !== peg$FAILED) { - s8 = [s8, s9]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - while (s7 !== peg$FAILED) { - s6.push(s7); - s7 = peg$currPos; - s8 = peg$currPos; - peg$silentFails++; - s9 = peg$parseBlock(); - peg$silentFails--; - if (s9 === peg$FAILED) { - s8 = void 0; - } else { - peg$currPos = s8; - s8 = peg$FAILED; - } - if (s8 !== peg$FAILED) { - if (input.length > peg$currPos) { - s9 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s9 !== peg$FAILED) { - s8 = [s8, s9]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } - if (s6 !== peg$FAILED) { - s5 = input.substring(s5, peg$currPos); - } else { - s5 = s6; - } - if (s5 !== peg$FAILED) { - peg$savedPos = s3; - s4 = peg$c1(s1, s4, s5); - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$parseBlock(); - if (s4 !== peg$FAILED) { - s5 = peg$currPos; - s6 = []; - s7 = peg$currPos; - s8 = peg$currPos; - peg$silentFails++; - s9 = peg$parseBlock(); - peg$silentFails--; - if (s9 === peg$FAILED) { - s8 = void 0; - } else { - peg$currPos = s8; - s8 = peg$FAILED; - } - if (s8 !== peg$FAILED) { - if (input.length > peg$currPos) { - s9 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s9 !== peg$FAILED) { - s8 = [s8, s9]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - while (s7 !== peg$FAILED) { - s6.push(s7); - s7 = peg$currPos; - s8 = peg$currPos; - peg$silentFails++; - s9 = peg$parseBlock(); - peg$silentFails--; - if (s9 === peg$FAILED) { - s8 = void 0; - } else { - peg$currPos = s8; - s8 = peg$FAILED; - } - if (s8 !== peg$FAILED) { - if (input.length > peg$currPos) { - s9 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s9 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s9 !== peg$FAILED) { - s8 = [s8, s9]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } - if (s6 !== peg$FAILED) { - s5 = input.substring(s5, peg$currPos); - } else { - s5 = s6; - } - if (s5 !== peg$FAILED) { - peg$savedPos = s3; - s4 = peg$c1(s1, s4, s5); - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } - if (s2 !== peg$FAILED) { - s3 = peg$currPos; - s4 = []; - if (input.length > peg$currPos) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - while (s5 !== peg$FAILED) { - s4.push(s5); - if (input.length > peg$currPos) { - s5 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - } - if (s4 !== peg$FAILED) { - s3 = input.substring(s3, peg$currPos); - } else { - s3 = s4; - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c2(s1, s2, s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseBlock() { - var s0; - - s0 = peg$parseBlock_Void(); - if (s0 === peg$FAILED) { - s0 = peg$parseBlock_Balanced(); - } - - return s0; - } - - function peg$parseBlock_Void() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c3) { - s1 = peg$c3; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c4); } - } - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c5) { - s3 = peg$c5; - peg$currPos += 3; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c6); } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseBlock_Name(); - if (s4 !== peg$FAILED) { - s5 = peg$parse__(); - if (s5 !== peg$FAILED) { - s6 = peg$currPos; - s7 = peg$parseBlock_Attributes(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - if (s8 !== peg$FAILED) { - peg$savedPos = s6; - s7 = peg$c7(s4, s7); - s6 = s7; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 === peg$FAILED) { - s6 = null; - } - if (s6 !== peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c8) { - s7 = peg$c8; - peg$currPos += 4; - } else { - s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c9); } - } - if (s7 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c10(s4, s6); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseBlock_Balanced() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8; - - s0 = peg$currPos; - s1 = peg$parseBlock_Start(); - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseBlock(); - if (s3 === peg$FAILED) { - s3 = peg$currPos; - s4 = []; - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$parseBlock(); - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s7 = peg$currPos; - peg$silentFails++; - s8 = peg$parseBlock_End(); - peg$silentFails--; - if (s8 === peg$FAILED) { - s7 = void 0; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 !== peg$FAILED) { - if (input.length > peg$currPos) { - s8 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s8 !== peg$FAILED) { - s6 = [s6, s7, s8]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - if (s5 !== peg$FAILED) { - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$parseBlock(); - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s7 = peg$currPos; - peg$silentFails++; - s8 = peg$parseBlock_End(); - peg$silentFails--; - if (s8 === peg$FAILED) { - s7 = void 0; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 !== peg$FAILED) { - if (input.length > peg$currPos) { - s8 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s8 !== peg$FAILED) { - s6 = [s6, s7, s8]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } - } else { - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - s3 = input.substring(s3, peg$currPos); - } else { - s3 = s4; - } - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseBlock(); - if (s3 === peg$FAILED) { - s3 = peg$currPos; - s4 = []; - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$parseBlock(); - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s7 = peg$currPos; - peg$silentFails++; - s8 = peg$parseBlock_End(); - peg$silentFails--; - if (s8 === peg$FAILED) { - s7 = void 0; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 !== peg$FAILED) { - if (input.length > peg$currPos) { - s8 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s8 !== peg$FAILED) { - s6 = [s6, s7, s8]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - if (s5 !== peg$FAILED) { - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$parseBlock(); - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - s7 = peg$currPos; - peg$silentFails++; - s8 = peg$parseBlock_End(); - peg$silentFails--; - if (s8 === peg$FAILED) { - s7 = void 0; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 !== peg$FAILED) { - if (input.length > peg$currPos) { - s8 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s8 !== peg$FAILED) { - s6 = [s6, s7, s8]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } - } else { - s4 = peg$FAILED; - } - if (s4 !== peg$FAILED) { - s3 = input.substring(s3, peg$currPos); - } else { - s3 = s4; - } - } - } - if (s2 !== peg$FAILED) { - s3 = peg$parseBlock_End(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c11(s1, s2, s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseBlock_Start() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c3) { - s1 = peg$c3; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c4); } - } - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c5) { - s3 = peg$c5; - peg$currPos += 3; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c6); } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseBlock_Name(); - if (s4 !== peg$FAILED) { - s5 = peg$parse__(); - if (s5 !== peg$FAILED) { - s6 = peg$currPos; - s7 = peg$parseBlock_Attributes(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - if (s8 !== peg$FAILED) { - peg$savedPos = s6; - s7 = peg$c7(s4, s7); - s6 = s7; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 === peg$FAILED) { - s6 = null; - } - if (s6 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c12) { - s7 = peg$c12; - peg$currPos += 3; - } else { - s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c13); } - } - if (s7 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c14(s4, s6); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseBlock_End() { - var s0, s1, s2, s3, s4, s5, s6; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c3) { - s1 = peg$c3; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c4); } - } - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - if (input.substr(peg$currPos, 4) === peg$c15) { - s3 = peg$c15; - peg$currPos += 4; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c16); } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseBlock_Name(); - if (s4 !== peg$FAILED) { - s5 = peg$parse__(); - if (s5 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c12) { - s6 = peg$c12; - peg$currPos += 3; - } else { - s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c13); } - } - if (s6 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c17(s4); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseBlock_Name() { - var s0; - - s0 = peg$parseNamespaced_Block_Name(); - if (s0 === peg$FAILED) { - s0 = peg$parseCore_Block_Name(); - } - - return s0; - } - - function peg$parseNamespaced_Block_Name() { - var s0, s1, s2, s3, s4; - - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseBlock_Name_Part(); - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 47) { - s3 = peg$c18; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c19); } - } - if (s3 !== peg$FAILED) { - s4 = peg$parseBlock_Name_Part(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } else { - s0 = s1; - } - - return s0; - } - - function peg$parseCore_Block_Name() { - var s0, s1, s2; - - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseBlock_Name_Part(); - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c20(s1); - } - s0 = s1; - - return s0; - } - - function peg$parseBlock_Name_Part() { - var s0, s1, s2, s3, s4; - - s0 = peg$currPos; - s1 = peg$currPos; - if (peg$c21.test(input.charAt(peg$currPos))) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c22); } - } - if (s2 !== peg$FAILED) { - s3 = []; - if (peg$c23.test(input.charAt(peg$currPos))) { - s4 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c24); } - } - while (s4 !== peg$FAILED) { - s3.push(s4); - if (peg$c23.test(input.charAt(peg$currPos))) { - s4 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c24); } - } - } - if (s3 !== peg$FAILED) { - s2 = [s2, s3]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s0 = input.substring(s0, peg$currPos); - } else { - s0 = s1; - } - - return s0; - } - - function peg$parseBlock_Attributes() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 123) { - s3 = peg$c26; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c27); } - } - if (s3 !== peg$FAILED) { - s4 = []; - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c28; - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c29); } - } - if (s8 !== peg$FAILED) { - s9 = peg$parse__(); - if (s9 !== peg$FAILED) { - s10 = peg$c30; - if (s10 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 47) { - s11 = peg$c18; - peg$currPos++; - } else { - s11 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c19); } - } - if (s11 === peg$FAILED) { - s11 = null; - } - if (s11 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c12) { - s12 = peg$c12; - peg$currPos += 3; - } else { - s12 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c13); } - } - if (s12 !== peg$FAILED) { - s8 = [s8, s9, s10, s11, s12]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - if (input.length > peg$currPos) { - s7 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s7 !== peg$FAILED) { - s6 = [s6, s7]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - while (s5 !== peg$FAILED) { - s4.push(s5); - s5 = peg$currPos; - s6 = peg$currPos; - peg$silentFails++; - s7 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 125) { - s8 = peg$c28; - peg$currPos++; - } else { - s8 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c29); } - } - if (s8 !== peg$FAILED) { - s9 = peg$parse__(); - if (s9 !== peg$FAILED) { - s10 = peg$c30; - if (s10 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 47) { - s11 = peg$c18; - peg$currPos++; - } else { - s11 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c19); } - } - if (s11 === peg$FAILED) { - s11 = null; - } - if (s11 !== peg$FAILED) { - if (input.substr(peg$currPos, 3) === peg$c12) { - s12 = peg$c12; - peg$currPos += 3; - } else { - s12 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c13); } - } - if (s12 !== peg$FAILED) { - s8 = [s8, s9, s10, s11, s12]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - peg$silentFails--; - if (s7 === peg$FAILED) { - s6 = void 0; - } else { - peg$currPos = s6; - s6 = peg$FAILED; - } - if (s6 !== peg$FAILED) { - if (input.length > peg$currPos) { - s7 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s7 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c0); } - } - if (s7 !== peg$FAILED) { - s6 = [s6, s7]; - s5 = s6; - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } else { - peg$currPos = s5; - s5 = peg$FAILED; - } - } - if (s4 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 125) { - s5 = peg$c28; - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c29); } - } - if (s5 !== peg$FAILED) { - s3 = [s3, s4, s5]; - s2 = s3; - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - } else { - peg$currPos = s2; - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s1 = input.substring(s1, peg$currPos); - } else { - s1 = s2; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c31(s1); - } - s0 = s1; - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c25); } - } - - return s0; - } - - function peg$parse__() { - var s0, s1; - - s0 = []; - if (peg$c32.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c33); } - } - if (s1 !== peg$FAILED) { - while (s1 !== peg$FAILED) { - s0.push(s1); - if (peg$c32.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$c33); } - } - } - } else { - s0 = peg$FAILED; - } - - return s0; - } - - - - /* - * - * _____ _ _ - * / ____| | | | | - * | | __ _ _| |_ ___ _ __ | |__ ___ _ __ __ _ - * | | |_ | | | | __/ _ \ '_ \| '_ \ / _ \ '__/ _` | - * | |__| | |_| | || __/ | | | |_) | __/ | | (_| | - * \_____|\__,_|\__\___|_| |_|_.__/ \___|_| \__, | - * __/ | - * GRAMMAR |___/ - * - * - * Welcome to the grammar file for Gutenberg posts! - * - * Please don't be distracted by the functions at the top - * here - they're just helpers for the grammar below. We - * try to keep them as minimal and simple as possible, - * but the parser generator forces us to declare them at - * the beginning of the file. - * - * What follows is the official specification grammar for - * documents created or edited in Gutenberg. It starts at - * the top-level rule `Block_List` - * - * The grammar is defined by a series of _rules_ and ways - * to return matches on those rules. It's a _PEG_, a - * parsing expression grammar, which simply means that for - * each of our rules we have a set of sub-rules to match - * on and the generated parser will try them in order - * until it finds the first match. - * - * This grammar is a _specification_ (with as little actual - * code as we can get away with) which is used by the - * parser generator to generate the actual _parser_ which - * is used by Gutenberg. We generate two parsers: one in - * JavaScript for use the browser and one in PHP for - * WordPress itself. PEG parser generators are available - * in many languages, though different libraries may require - * some translation of this grammar into their syntax. - * - * For more information: - * @see https://pegjs.org - * @see https://en.wikipedia.org/wiki/Parsing_expression_grammar - * - */ - - /** null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $pre, - 'innerContent' => array( $pre ), - ); - } - - foreach ( $tokens as $token ) { - list( $token, $html ) = $token; - - $blocks[] = $token; - - if ( ! empty( $html ) ) { - $blocks[] = array( - 'blockName' => null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $html, - 'innerContent' => array( $html ), - ); - } - } - - if ( ! empty( $post ) ) { - $blocks[] = array( - 'blockName' => null, - 'attrs' => peg_empty_attrs(), - 'innerBlocks' => array(), - 'innerHTML' => $post, - 'innerContent' => array( $post ), - ); - } - - return $blocks; - } - } - - ?> **/ - - function freeform( s ) { - return s.length && { - blockName: null, - attrs: {}, - innerBlocks: [], - innerHTML: s, - innerContent: [ s ], - }; - } - - function joinBlocks( pre, tokens, post ) { - var blocks = [], i, l, html, item, token; - - if ( pre.length ) { - blocks.push( freeform( pre ) ); - } - - for ( i = 0, l = tokens.length; i < l; i++ ) { - item = tokens[ i ]; - token = item[ 0 ]; - html = item[ 1 ]; - - blocks.push( token ); - if ( html.length ) { - blocks.push( freeform( html ) ); - } - } - - if ( post.length ) { - blocks.push( freeform( post ) ); - } - - return blocks; - } - - function maybeJSON( s ) { - try { - return JSON.parse( s ); - } catch (e) { - return null; - } - } - - function processInnerContent( list ) { - var i, l, item; - var html = ''; - var blocks = []; - var content = []; - - // nod to performance over a simpler reduce - // and clone model we could have taken here - for ( i = 0, l = list.length; i < l; i++ ) { - item = list[ i ]; - - if ( 'string' === typeof item ) { - html += item; - content.push( item ); - } else { - blocks.push( item ); - content.push( null ); - } - }; - - return [ html, blocks, content ]; - } - - - - peg$result = peg$startRuleFunction(); - - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail(peg$endExpectation()); - } - - throw peg$buildStructuredError( - peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, - peg$maxFailPos < input.length - ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) - : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) - ); - } - } - - return { - SyntaxError: peg$SyntaxError, - parse: peg$parse - }; -}); diff --git a/packages/block-serialization-spec-parser/test/test-parser.php b/packages/block-serialization-spec-parser/test/test-parser.php index 28c523951c343..a55183c44b8e5 100644 --- a/packages/block-serialization-spec-parser/test/test-parser.php +++ b/packages/block-serialization-spec-parser/test/test-parser.php @@ -8,7 +8,7 @@ */ // Include the generated parser. -require_once dirname( __FILE__ ) . '/../../../lib/parser.php'; +require_once dirname( __FILE__ ) . '/../parser.php'; $parser = new Gutenberg_PEG_Parser(); diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 9e0d0f2bd2a4b..85a39fbd82a4a 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -33,7 +33,7 @@ ./languages/gutenberg-translations.php - ./lib/parser.php + ./packages/block-serialization-spec-parser/parser.php lib/class-wp-rest-block-renderer-controller.php