ソースを参照

Update Compiler for new Parser output.

Justin Hileman 12 年 前
コミット
87a734e60c
2 ファイル変更11 行追加15 行削除
  1. 9 11
      src/Mustache/Compiler.php
  2. 2 4
      test/Mustache/Test/CompilerTest.php

+ 9 - 11
src/Mustache/Compiler.php

@@ -373,13 +373,11 @@ class Mustache_Compiler
      */
     private function text($text, $level)
     {
-        if ($text === "\n") {
-            $this->indentNextLine = true;
+        $indentNextLine = (substr($text, -1) === "\n");
+        $code = sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true));
+        $this->indentNextLine = $indentNextLine;
 
-            return $this->prepare(self::LINE, $level);
-        } else {
-            return sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true));
-        }
+        return $code;
     }
 
     /**
@@ -467,12 +465,12 @@ class Mustache_Compiler
      */
     private function flushIndent()
     {
-        if ($this->indentNextLine) {
-            $this->indentNextLine = false;
-
-            return self::LINE_INDENT;
-        } else {
+        if (!$this->indentNextLine) {
             return '';
         }
+
+        $this->indentNextLine = false;
+
+        return self::LINE_INDENT;
     }
 }

+ 2 - 4
test/Mustache/Test/CompilerTest.php

@@ -105,8 +105,7 @@ class Mustache_Test_CompilerTest extends PHPUnit_Framework_TestCase
             array(
                 '',
                 array(
-                    $this->createTextToken('foo'),
-                    $this->createTextToken("\n"),
+                    $this->createTextToken("foo\n"),
                     array(
                         Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
                         Mustache_Tokenizer::NAME => 'name',
@@ -123,8 +122,7 @@ class Mustache_Test_CompilerTest extends PHPUnit_Framework_TestCase
                 'UTF-8',
                 array(
                     "\nclass Monkey extends Mustache_Template",
-                    '$buffer .= $indent . \'foo\'',
-                    '$buffer .= "\n"',
+                    "\$buffer .= \$indent . 'foo\n';",
                     '$value = $this->resolveValue($context->find(\'name\'), $context, $indent);',
                     '$buffer .= htmlspecialchars($value, '.ENT_COMPAT.', \'UTF-8\');',
                     '$value = $this->resolveValue($context->last(), $context, $indent);',