MDL-50150 Mustache: Update to 2.9.0 version of mustache.php
authorDamyon Wiese <damyon@moodle.com>
Wed, 22 Jul 2015 05:02:01 +0000 (13:02 +0800)
committerDavid Monllao <davidm@moodle.com>
Thu, 20 Aug 2015 03:44:56 +0000 (11:44 +0800)
And enable the BLOCKS pragma (we need it for reusable templates).

37 files changed:
lib/mustache/LICENSE
lib/mustache/README.md
lib/mustache/composer.json [deleted file]
lib/mustache/readme_moodle.txt
lib/mustache/src/Mustache/Autoloader.php
lib/mustache/src/Mustache/Cache.php
lib/mustache/src/Mustache/Cache/AbstractCache.php
lib/mustache/src/Mustache/Cache/FilesystemCache.php
lib/mustache/src/Mustache/Cache/NoopCache.php
lib/mustache/src/Mustache/Compiler.php
lib/mustache/src/Mustache/Context.php
lib/mustache/src/Mustache/Engine.php
lib/mustache/src/Mustache/Exception.php
lib/mustache/src/Mustache/Exception/InvalidArgumentException.php
lib/mustache/src/Mustache/Exception/LogicException.php
lib/mustache/src/Mustache/Exception/RuntimeException.php
lib/mustache/src/Mustache/Exception/SyntaxException.php
lib/mustache/src/Mustache/Exception/UnknownFilterException.php
lib/mustache/src/Mustache/Exception/UnknownHelperException.php
lib/mustache/src/Mustache/Exception/UnknownTemplateException.php
lib/mustache/src/Mustache/HelperCollection.php
lib/mustache/src/Mustache/LambdaHelper.php
lib/mustache/src/Mustache/Loader.php
lib/mustache/src/Mustache/Loader/ArrayLoader.php
lib/mustache/src/Mustache/Loader/CascadingLoader.php
lib/mustache/src/Mustache/Loader/FilesystemLoader.php
lib/mustache/src/Mustache/Loader/InlineLoader.php
lib/mustache/src/Mustache/Loader/MutableLoader.php
lib/mustache/src/Mustache/Loader/StringLoader.php
lib/mustache/src/Mustache/Logger.php
lib/mustache/src/Mustache/Logger/AbstractLogger.php
lib/mustache/src/Mustache/Logger/StreamLogger.php
lib/mustache/src/Mustache/Parser.php
lib/mustache/src/Mustache/Template.php
lib/mustache/src/Mustache/Tokenizer.php
lib/outputrenderers.php
lib/thirdpartylibs.xml

index 0bdbc04..e0aecc9 100644 (file)
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2010-2014 Justin Hileman
+Copyright (c) 2010-2015 Justin Hileman
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
index b33b355..6a309ae 100644 (file)
@@ -3,9 +3,9 @@ Mustache.php
 
 A [Mustache](http://mustache.github.com/) implementation in PHP.
 
-[![Package version](http://img.shields.io/packagist/v/mustache/mustache.svg)](https://packagist.org/packages/mustache/mustache)
-[![Build status](http://img.shields.io/travis/bobthecow/mustache.php/dev.svg)](http://travis-ci.org/bobthecow/mustache.php)
-[![Monthly downloads](http://img.shields.io/packagist/dm/mustache/mustache.svg)](https://packagist.org/packages/mustache/mustache)
+[![Package version](http://img.shields.io/packagist/v/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache)
+[![Build status](http://img.shields.io/travis/bobthecow/mustache.php/dev.svg?style=flat-square)](http://travis-ci.org/bobthecow/mustache.php)
+[![Monthly downloads](http://img.shields.io/packagist/dm/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache)
 
 
 Usage
@@ -24,9 +24,9 @@ And a more in-depth example -- this is the canonical Mustache template:
 
 ```html+jinja
 Hello {{name}}
-You have just won ${{value}}!
+You have just won {{value}} dollars!
 {{#in_ca}}
-Well, ${{taxed_value}}, after taxes.
+Well, {{taxed_value}} dollars, after taxes.
 {{/in_ca}}
 ```
 
diff --git a/lib/mustache/composer.json b/lib/mustache/composer.json
deleted file mode 100644 (file)
index 2969d03..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "name": "mustache/mustache",
-    "description": "A Mustache implementation in PHP.",
-    "keywords": ["templating", "mustache"],
-    "homepage": "https://github.com/bobthecow/mustache.php",
-    "type": "library",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Justin Hileman",
-            "email": "justin@justinhileman.info",
-            "homepage": "http://justinhileman.com"
-        }
-    ],
-    "require": {
-        "php": ">=5.2.4"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "*"
-    },
-    "autoload": {
-        "psr-0": { "Mustache": "src/" }
-    }
-}
index 31ce19d..912fc86 100644 (file)
@@ -1,6 +1,8 @@
 Description of Mustache library import into moodle.
 
-Download from https://github.com/bobthecow/mustache.php
+Clone from https://github.com/moodle/custom-mustache.php
+
+Rebase onto latest tag from https://github.com/bobthecow/mustache.php
 
 Delete folder "test"
 
@@ -9,3 +11,9 @@ Delete phpunit.xml.dist
 Delete hidden files ".*"
 
 Delete folder "bin"
+
+Delete folder "vendor"
+
+Delete composer.json
+
+Copy into this folder, and update this readme to cover any changes.
index 8c8e906..b33bc24 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -24,7 +24,7 @@ class Mustache_Autoloader
     public function __construct($baseDir = null)
     {
         if ($baseDir === null) {
-            $baseDir = dirname(__FILE__).'/..';
+            $baseDir = dirname(__FILE__) . '/..';
         }
 
         // realpath doesn't always work, for example, with stream URIs
index c8fc5d5..5df8a23 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -22,7 +22,7 @@ interface Mustache_Cache
      *
      * @param string $key
      *
-     * @return boolean indicates successfully class load
+     * @return bool indicates successfully class load
      */
     public function load($key);
 
@@ -31,8 +31,6 @@ interface Mustache_Cache
      *
      * @param string $key
      * @param string $value
-     *
-     * @return void
      */
     public function cache($key, $value);
 }
index 98b6451..cf1c041 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -47,9 +47,9 @@ abstract class Mustache_Cache_AbstractCache implements Mustache_Cache
     /**
      * Add a log record if logging is enabled.
      *
-     * @param integer $level   The logging level
-     * @param string  $message The log message
-     * @param array   $context The log context
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
      */
     protected function log($level, $message, array $context = array())
     {
index 120ad2d..5b56222 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -41,7 +41,7 @@ class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
      *
      * @param string $key
      *
-     * @return boolean
+     * @return bool
      */
     public function load($key)
     {
@@ -56,12 +56,10 @@ class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
     }
 
     /**
-     * Cache and load the compiled class
+     * Cache and load the compiled class.
      *
      * @param string $key
      * @param string $value
-     *
-     * @return void
      */
     public function cache($key, $value)
     {
@@ -91,7 +89,7 @@ class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
     }
 
     /**
-     * Create cache directory
+     * Create cache directory.
      *
      * @throws Mustache_Exception_RuntimeException If unable to create directory
      *
@@ -119,14 +117,12 @@ class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
     }
 
     /**
-     * Write cache file
+     * Write cache file.
      *
      * @throws Mustache_Exception_RuntimeException If unable to write file
      *
      * @param string $fileName
      * @param string $value
-     *
-     * @return void
      */
     private function writeFile($fileName, $value)
     {
index d3a7e1f..7a4b55b 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -22,7 +22,7 @@ class Mustache_Cache_NoopCache extends Mustache_Cache_AbstractCache
      *
      * @param string $key
      *
-     * @return boolean
+     * @return bool
      */
     public function load($key)
     {
@@ -34,8 +34,6 @@ class Mustache_Cache_NoopCache extends Mustache_Cache_AbstractCache
      *
      * @param string $key
      * @param string $value
-     *
-     * @return void
      */
     public function cache($key, $value)
     {
index 72d3414..7d5c96b 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
  */
 class Mustache_Compiler
 {
-
     private $pragmas;
     private $defaultPragmas = array();
     private $sections;
+    private $blocks;
     private $source;
     private $indentNextLine;
     private $customEscape;
@@ -44,6 +44,7 @@ class Mustache_Compiler
     {
         $this->pragmas         = $this->defaultPragmas;
         $this->sections        = array();
+        $this->blocks          = array();
         $this->source          = $source;
         $this->indentNextLine  = true;
         $this->customEscape    = $customEscape;
@@ -196,6 +197,7 @@ class Mustache_Compiler
                 return $buffer;
             }
         %s
+        %s
         }';
 
     const KLASS_NO_LAMBDAS = '<?php
@@ -226,19 +228,19 @@ class Mustache_Compiler
     {
         $code     = $this->walk($tree);
         $sections = implode("\n", $this->sections);
-        $klass    = empty($this->sections) ? self::KLASS_NO_LAMBDAS : self::KLASS;
+        $blocks   = implode("\n", $this->blocks);
+        $klass    = empty($this->sections) && empty($this->blocks) ? self::KLASS_NO_LAMBDAS : self::KLASS;
 
         $callable = $this->strictCallables ? $this->prepare(self::STRICT_CALLABLE) : '';
 
-        return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections);
+        return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections, $blocks);
     }
 
     const BLOCK_VAR = '
-        $value = $this->resolveValue($context->findInBlock(%s), $context, $indent);
-        if ($value && !is_array($value) && !is_object($value)) {
-            $buffer .= $value;
-        } else {
-            %s
+        $blockFunction = $context->findInBlock(%s);
+        if (is_callable($blockFunction)) {
+            $buffer .= call_user_func($blockFunction, $context);
+        } else {%s
         }
     ';
 
@@ -259,14 +261,10 @@ class Mustache_Compiler
     {
         $id = var_export($id, true);
 
-        return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $this->walk($nodes, 2));
+        return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $this->walk($nodes, $level));
     }
 
-    const BLOCK_ARG = '
-        // %s block_arg
-        $value = $this->section%s($context, $indent, true);
-        $newContext[%s] = %s$value;
-    ';
+    const BLOCK_ARG = '$newContext[%s] = array($this, \'block%s\');';
 
     /**
      * Generate Mustache Template inheritance block argument PHP source.
@@ -283,10 +281,39 @@ class Mustache_Compiler
      */
     private function blockArg($nodes, $id, $start, $end, $otag, $ctag, $level)
     {
-        $key = $this->section($nodes, $id, array(), $start, $end, $otag, $ctag, $level, true);
-        $id  = var_export($id, true);
+        $key = $this->block($nodes);
+        $keystr = var_export($key, true);
+        $id = var_export($id, true);
+
+        return sprintf($this->prepare(self::BLOCK_ARG, 1), $id, $key);
+    }
+
+    const BLOCK_FUNCTION = '
+        public function block%s($context)
+        {
+            $indent = $buffer = \'\';%s
+
+            return $buffer;
+        }
+    ';
+
+    /**
+     * Generate Mustache Template inheritance block function PHP source.
+     *
+     * @param array $nodes Array of child tokens
+     *
+     * @return string key of new block function
+     */
+    private function block($nodes)
+    {
+        $code = $this->walk($nodes, 0);
+        $key = ucfirst(md5($code));
 
-        return sprintf($this->prepare(self::BLOCK_ARG, $level), $id, $key, $id, $this->flushIndent());
+        if (!isset($this->blocks[$key])) {
+            $this->blocks[$key] = sprintf($this->prepare(self::BLOCK_FUNCTION, 0), $key, $code);
+        }
+
+        return $key;
     }
 
     const SECTION_CALL = '
@@ -319,7 +346,8 @@ class Mustache_Compiler
             }
 
             return $buffer;
-        }';
+        }
+    ';
 
     /**
      * Generate Mustache Template section PHP source.
@@ -342,12 +370,12 @@ class Mustache_Compiler
         $callable = $this->getCallable();
 
         if ($otag !== '{{' || $ctag !== '}}') {
-            $delims = ', '.var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true);
+            $delims = ', ' . var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true);
         } else {
             $delims = '';
         }
 
-        $key = ucfirst(md5($delims."\n".$source));
+        $key = ucfirst(md5($delims . "\n" . $source));
 
         if (!isset($this->sections[$key])) {
             $this->sections[$key] = sprintf($this->prepare(self::SECTION), $key, $callable, $source, $delims, $this->walk($nodes, 2));
@@ -369,7 +397,8 @@ class Mustache_Compiler
         $value = $context->%s(%s);%s
         if (empty($value)) {
             %s
-        }';
+        }
+    ';
 
     /**
      * Generate Mustache Template inverted section PHP source.
@@ -458,7 +487,7 @@ class Mustache_Compiler
      *
      * @param array $node
      *
-     * @return boolean True if $node is a block arg token.
+     * @return bool True if $node is a block arg token.
      */
     private static function onlyBlockArgs(array $node)
     {
@@ -475,7 +504,7 @@ class Mustache_Compiler
      *
      * @param string   $id      Variable name
      * @param string[] $filters Array of filters
-     * @param boolean  $escape  Escape the variable value for output?
+     * @param bool     $escape  Escape the variable value for output?
      * @param int      $level
      *
      * @return string Generated variable interpolation PHP source
@@ -544,16 +573,16 @@ class Mustache_Compiler
     /**
      * Prepare PHP source code snippet for output.
      *
-     * @param string  $text
-     * @param int     $bonus          Additional indent level (default: 0)
-     * @param boolean $prependNewline Prepend a newline to the snippet? (default: true)
-     * @param boolean $appendNewline  Append a newline to the snippet? (default: false)
+     * @param string $text
+     * @param int    $bonus          Additional indent level (default: 0)
+     * @param bool   $prependNewline Prepend a newline to the snippet? (default: true)
+     * @param bool   $appendNewline  Append a newline to the snippet? (default: false)
      *
      * @return string PHP source code snippet
      */
     private function prepare($text, $bonus = 0, $prependNewline = true, $appendNewline = false)
     {
-        $text = ($prependNewline ? "\n" : '').trim($text);
+        $text = ($prependNewline ? "\n" : '') . trim($text);
         if ($prependNewline) {
             $bonus++;
         }
@@ -561,7 +590,7 @@ class Mustache_Compiler
             $text .= "\n";
         }
 
-        return preg_replace("/\n( {8})?/", "\n".str_repeat(" ", $bonus * 4), $text);
+        return preg_replace("/\n( {8})?/", "\n" . str_repeat(' ', $bonus * 4), $text);
     }
 
     const DEFAULT_ESCAPE = 'htmlspecialchars(%s, %s, %s)';
@@ -602,6 +631,12 @@ class Mustache_Compiler
             return 'last';
         }
 
+        if (isset($this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) && $this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) {
+            if (substr($id, 0, 1) === '.') {
+                return 'findAnchoredDot';
+            }
+        }
+
         if (strpos($id, '.') === false) {
             return 'find';
         }
index db03acc..e660b54 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -141,6 +141,42 @@ class Mustache_Context
         return $value;
     }
 
+    /**
+     * Find an 'anchored dot notation' variable in the Context stack.
+     *
+     * This is the same as findDot(), except it looks in the top of the context
+     * stack for the first value, rather than searching the whole context stack
+     * and starting from there.
+     *
+     * @see Mustache_Context::findDot
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if given an invalid anchored dot $id.
+     *
+     * @param string $id Dotted variable selector
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    public function findAnchoredDot($id)
+    {
+        $chunks = explode('.', $id);
+        $first  = array_shift($chunks);
+        if ($first !== '') {
+            throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected id for findAnchoredDot: %s', $id));
+        }
+
+        $value  = $this->last();
+
+        foreach ($chunks as $chunk) {
+            if ($value === '') {
+                return $value;
+            }
+
+            $value = $this->findVariableInStack($chunk, array($value));
+        }
+
+        return $value;
+    }
+
     /**
      * Find an argument in the block context stack.
      *
index 4cac394..08bcc81 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
  */
 class Mustache_Engine
 {
-    const VERSION        = '2.7.0';
+    const VERSION        = '2.9.0';
     const SPEC_VERSION   = '1.1.2';
 
-    const PRAGMA_FILTERS = 'FILTERS';
-    const PRAGMA_BLOCKS  = 'BLOCKS';
+    const PRAGMA_FILTERS      = 'FILTERS';
+    const PRAGMA_BLOCKS       = 'BLOCKS';
+    const PRAGMA_ANCHORED_DOT = 'ANCHORED-DOT';
 
     // Known pragmas
     private static $knownPragmas = array(
-        self::PRAGMA_FILTERS => true,
-        self::PRAGMA_BLOCKS  => true,
+        self::PRAGMA_FILTERS      => true,
+        self::PRAGMA_BLOCKS       => true,
+        self::PRAGMA_ANCHORED_DOT => true,
     );
 
     // Template cache
@@ -174,7 +176,7 @@ class Mustache_Engine
         }
 
         if (isset($options['entity_flags'])) {
-          $this->entityFlags = $options['entity_flags'];
+            $this->entityFlags = $options['entity_flags'];
         }
 
         if (isset($options['charset'])) {
@@ -405,7 +407,7 @@ class Mustache_Engine
      *
      * @param string $name
      *
-     * @return boolean True if the helper is present
+     * @return bool True if the helper is present
      */
     public function hasHelper($name)
     {
@@ -772,9 +774,9 @@ class Mustache_Engine
     /**
      * Add a log record if logging is enabled.
      *
-     * @param integer $level   The logging level
-     * @param string  $message The log message
-     * @param array   $context The log context
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
      */
     private function log($level, $message, array $context = array())
     {
index 8a2b01c..7c04792 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 9bd1107..c6084b8 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 255ce54..4bfda5f 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index a3c48f7..5eb90dd 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 7a16f7e..ab4d6aa 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index b9a315a..43d2c06 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 226d774..7fe4a71 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 5dafe89..f1f69bf 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index c7c7950..0a92428 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -103,7 +103,7 @@ class Mustache_HelperCollection
      *
      * @param string $name
      *
-     * @return boolean True if helper is present
+     * @return bool True if helper is present
      */
     public function __isset($name)
     {
@@ -115,7 +115,7 @@ class Mustache_HelperCollection
      *
      * @param string $name
      *
-     * @return boolean True if helper is present
+     * @return bool True if helper is present
      */
     public function has($name)
     {
@@ -163,7 +163,7 @@ class Mustache_HelperCollection
     /**
      * Check whether the helper collection is empty.
      *
-     * @return boolean True if the collection is empty
+     * @return bool True if the collection is empty
      */
     public function isEmpty()
     {
index 7cd8092..de48fd6 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index e75ee3f..1b075d0 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index e7ece91..90cecca 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index d02a273..09a376c 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -18,7 +18,7 @@ class Mustache_Loader_CascadingLoader implements Mustache_Loader
     private $loaders;
 
     /**
-     * Construct a CascadingLoader with an array of loaders:
+     * Construct a CascadingLoader with an array of loaders.
      *
      *     $loader = new Mustache_Loader_CascadingLoader(array(
      *         new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__),
index 7cbf9cd..e2aab78 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 9e4ab42..2970937 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -46,7 +46,6 @@
  *
  *     @@ hello
  *     Hello, {{ name }}!
- *
  */
 class Mustache_Loader_InlineLoader implements Mustache_Loader
 {
@@ -56,6 +55,7 @@ class Mustache_Loader_InlineLoader implements Mustache_Loader
 
     /**
      * The InlineLoader requires a filename and offset to process templates.
+     *
      * The magic constants `__FILE__` and `__COMPILER_HALT_OFFSET__` are usually
      * perfectly suited to the job:
      *
index 78901be..4855c16 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -18,8 +18,6 @@ interface Mustache_Loader_MutableLoader
      * Set an associative array of Template sources for this loader.
      *
      * @param array $templates
-     *
-     * @return void
      */
     public function setTemplates(array $templates);
 
@@ -28,8 +26,6 @@ interface Mustache_Loader_MutableLoader
      *
      * @param string $name
      * @param string $template Mustache Template source
-     *
-     * @return void
      */
     public function setTemplate($name, $template);
 }
index 72d105d..99fb38e 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index 2e5d674..93c27f6 100644 (file)
@@ -3,14 +3,14 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
  */
 
 /**
- * Describes a Mustache logger instance
+ * Describes a Mustache logger instance.
  *
  * This is identical to the Psr\Log\LoggerInterface.
  *
@@ -29,7 +29,7 @@
 interface Mustache_Logger
 {
     /**
-     * Psr\Log compatible log levels
+     * Psr\Log compatible log levels.
      */
     const EMERGENCY = 'emergency';
     const ALERT     = 'alert';
@@ -45,8 +45,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function emergency($message, array $context = array());
 
@@ -58,8 +56,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function alert($message, array $context = array());
 
@@ -70,8 +66,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function critical($message, array $context = array());
 
@@ -81,8 +75,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function error($message, array $context = array());
 
@@ -94,8 +86,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function warning($message, array $context = array());
 
@@ -104,8 +94,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function notice($message, array $context = array());
 
@@ -116,8 +104,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function info($message, array $context = array());
 
@@ -126,8 +112,6 @@ interface Mustache_Logger
      *
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function debug($message, array $context = array());
 
@@ -137,8 +121,6 @@ interface Mustache_Logger
      * @param mixed  $level
      * @param string $message
      * @param array  $context
-     *
-     * @return null
      */
     public function log($level, $message, array $context = array());
 }
index 3dd96e7..1c27db9 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
index d422340..88f3000 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -39,7 +39,7 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
      * @throws InvalidArgumentException if the logging level is unknown.
      *
      * @param resource|string $stream Resource instance or URL
-     * @param integer         $level  The minimum logging level at which this handler will be triggered
+     * @param int             $level  The minimum logging level at which this handler will be triggered
      */
     public function __construct($stream, $level = Mustache_Logger::ERROR)
     {
@@ -67,7 +67,7 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
      *
      * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown.
      *
-     * @param integer $level The minimum logging level which will be written
+     * @param int $level The minimum logging level which will be written
      */
     public function setLevel($level)
     {
@@ -81,7 +81,7 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
     /**
      * Get the current minimum logging level.
      *
-     * @return integer
+     * @return int
      */
     public function getLevel()
     {
@@ -114,9 +114,9 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
      * @throws Mustache_Exception_LogicException   If neither a stream resource nor url is present.
      * @throws Mustache_Exception_RuntimeException If the stream url cannot be opened.
      *
-     * @param integer $level   The logging level
-     * @param string  $message The log message
-     * @param array   $context The log context
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
      */
     protected function writeLog($level, $message, array $context = array())
     {
@@ -141,7 +141,7 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
      *
      * @throws InvalidArgumentException if the logging level is unknown.
      *
-     * @param integer $level
+     * @param int $level
      *
      * @return string
      */
@@ -153,9 +153,9 @@ class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
     /**
      * Format a log line for output.
      *
-     * @param integer $level   The logging level
-     * @param string  $message The log message
-     * @param array   $context The log context
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
      *
      * @return string
      */
index 0c134ec..7d3559b 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -254,7 +254,7 @@ class Mustache_Parser
      *
      * @param array $token
      *
-     * @return boolean True if token is a whitespace token
+     * @return bool True if token is a whitespace token
      */
     private function tokenIsWhitespace(array $token)
     {
index e7156cf..91074c4 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -22,7 +22,7 @@ abstract class Mustache_Template
     protected $mustache;
 
     /**
-     * @var boolean
+     * @var bool
      */
     protected $strictCallables = false;
 
@@ -37,7 +37,7 @@ abstract class Mustache_Template
     }
 
     /**
-     * Mustache Template instances can be treated as a function and rendered by simply calling them:
+     * Mustache Template instances can be treated as a function and rendered by simply calling them.
      *
      *     $m = new Mustache_Engine;
      *     $tpl = $m->loadTemplate('Hello, {{ name }}!');
@@ -109,7 +109,7 @@ abstract class Mustache_Template
      *
      * @param mixed $value
      *
-     * @return boolean True if the value is 'iterable'
+     * @return bool True if the value is 'iterable'
      */
     protected function isIterable($value)
     {
index 3175a03..a71df2c 100644 (file)
@@ -3,7 +3,7 @@
 /*
  * This file is part of Mustache.php.
  *
- * (c) 2010-2014 Justin Hileman
+ * (c) 2010-2015 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -53,13 +53,6 @@ class Mustache_Tokenizer
         self::T_BLOCK_VAR    => true,
     );
 
-    // Interpolated tags
-    private static $interpolatedTags = array(
-        self::T_ESCAPED     => true,
-        self::T_UNESCAPED   => true,
-        self::T_UNESCAPED_2 => true,
-    );
-
     // Token properties
     const TYPE    = 'type';
     const NAME    = 'name';
@@ -75,7 +68,6 @@ class Mustache_Tokenizer
 
     private $state;
     private $tagType;
-    private $tag;
     private $buffer;
     private $tokens;
     private $seenTag;
@@ -163,7 +155,7 @@ class Mustache_Tokenizer
                             self::OTAG  => $this->otag,
                             self::CTAG  => $this->ctag,
                             self::LINE  => $this->line,
-                            self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen
+                            self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen,
                         );
 
                         if ($this->tagType === self::T_UNESCAPED) {
@@ -224,7 +216,6 @@ class Mustache_Tokenizer
     {
         $this->state   = self::IN_TEXT;
         $this->tagType = null;
-        $this->tag     = null;
         $this->buffer  = '';
         $this->tokens  = array();
         $this->seenTag = false;
@@ -244,7 +235,7 @@ class Mustache_Tokenizer
             $this->tokens[] = array(
                 self::TYPE  => self::T_TEXT,
                 self::LINE  => $this->line,
-                self::VALUE => $this->buffer
+                self::VALUE => $this->buffer,
             );
             $this->buffer   = '';
         }
@@ -261,7 +252,7 @@ class Mustache_Tokenizer
     private function changeDelimiters($text, $index)
     {
         $startIndex = strpos($text, '=', $index) + 1;
-        $close      = '='.$this->ctag;
+        $close      = '=' . $this->ctag;
         $closeIndex = strpos($text, $close, $index);
 
         $this->setDelimiters(trim(substr($text, $startIndex, $closeIndex - $startIndex)));
@@ -322,7 +313,7 @@ class Mustache_Tokenizer
      * @param string $text   Mustache template source
      * @param int    $index  Current tokenizer index
      *
-     * @return boolean True if this is a closing section tag
+     * @return bool True if this is a closing section tag
      */
     private function tagChange($tag, $tagLen, $text, $index)
     {
index 70307a4..d08fb76 100644 (file)
@@ -106,7 +106,8 @@ class renderer_base {
                 'cache' => $cachedir,
                 'escape' => 's',
                 'loader' => $loader,
-                'helpers' => $helpers));
+                'helpers' => $helpers,
+                'pragmas' => [Mustache_Engine::PRAGMA_BLOCKS]));
 
         }
 
index 942ae81..d560b63 100644 (file)
     <location>mustache</location>
     <name>Mustache</name>
     <license>MIT</license>
-    <version>2.7.0</version>
+    <version>2.9.0</version>
   </library>
   <library>
     <location>amd/src/mustache.js</location>