From b58fdd909b67b363d3d0f74c2bbfff6b89686124 Mon Sep 17 00:00:00 2001 From: David Woloszyn Date: Thu, 29 Sep 2022 17:29:19 +1000 Subject: [PATCH] MDL-75473 lib: Updated Mustache to 2.14.2 --- lib/mustache/readme_moodle.txt | 8 ++++++- lib/mustache/src/Mustache/Engine.php | 2 +- lib/mustache/src/Mustache/Tokenizer.php | 31 +++++++++++++++++++++++++ lib/thirdpartylibs.xml | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/lib/mustache/readme_moodle.txt b/lib/mustache/readme_moodle.txt index 1c187bd371d..62b6c18005b 100644 --- a/lib/mustache/readme_moodle.txt +++ b/lib/mustache/readme_moodle.txt @@ -19,4 +19,10 @@ been already applied upstream for the release being used, can be removed from the list. If still not available upstream, they will need to be re-applied. 1) If the relevant pull request has not been accepted yet, apply the following commit, so we are able to disable unnecessary rendering: - https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df# +https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df# +This can be achieved by: + a) Download the patch from + https://github.com/bobthecow/mustache.php/pull/402/commits/db771014c7e346438f68077813ebdda3fdae12df.patch + b) In terminal, navigate to lib/mustache/src/Mustache + c) Run the following: patch --directory . < ~/path/to/patch.patch + d) We do not need the unit test, so run rm DisableLambdaRenderingTest.php \ No newline at end of file diff --git a/lib/mustache/src/Mustache/Engine.php b/lib/mustache/src/Mustache/Engine.php index 8e8bc1010e5..0d3b7218552 100644 --- a/lib/mustache/src/Mustache/Engine.php +++ b/lib/mustache/src/Mustache/Engine.php @@ -23,7 +23,7 @@ */ class Mustache_Engine { - const VERSION = '2.14.1'; + const VERSION = '2.14.2'; const SPEC_VERSION = '1.2.2'; const PRAGMA_FILTERS = 'FILTERS'; diff --git a/lib/mustache/src/Mustache/Tokenizer.php b/lib/mustache/src/Mustache/Tokenizer.php index 2a172c34864..e59d30bd029 100644 --- a/lib/mustache/src/Mustache/Tokenizer.php +++ b/lib/mustache/src/Mustache/Tokenizer.php @@ -215,6 +215,10 @@ class Mustache_Tokenizer } } + if ($this->state !== self::IN_TEXT) { + $this->throwUnclosedTagException(); + } + $this->flushBuffer(); // Restore the user's encoding... @@ -279,6 +283,10 @@ class Mustache_Tokenizer $close = '=' . $this->ctag; $closeIndex = strpos($text, $close, $index); + if ($closeIndex === false) { + $this->throwUnclosedTagException(); + } + $token = array( self::TYPE => self::T_DELIM_CHANGE, self::LINE => $this->line, @@ -333,6 +341,10 @@ class Mustache_Tokenizer private function addPragma($text, $index) { $end = strpos($text, $this->ctag, $index); + if ($end === false) { + $this->throwUnclosedTagException(); + } + $pragma = trim(substr($text, $index + 2, $end - $index - 2)); // Pragmas are hoisted to the front of the template. @@ -344,4 +356,23 @@ class Mustache_Tokenizer return $end + $this->ctagLen - 1; } + + private function throwUnclosedTagException() + { + $name = trim($this->buffer); + if ($name !== '') { + $msg = sprintf('Unclosed tag: %s on line %d', $name, $this->line); + } else { + $msg = sprintf('Unclosed tag on line %d', $this->line); + } + + throw new Mustache_Exception_SyntaxException($msg, array( + self::TYPE => $this->tagType, + self::NAME => $name, + self::OTAG => $this->otag, + self::CTAG => $this->ctag, + self::LINE => $this->line, + self::INDEX => $this->seenTag - $this->otagLen, + )); + } } diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml index 47118aed1ce..3e42703d9ed 100644 --- a/lib/thirdpartylibs.xml +++ b/lib/thirdpartylibs.xml @@ -308,7 +308,7 @@ All rights reserved. mustache Mustache PHP library for displaying mustache templates. - 2.14.1 + 2.14.2 MIT https://github.com/bobthecow/mustache.php