소스 검색

Changed TagInterface to TokenConverterInterface and finished unit tests.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20271 44c647ce-9c0f-0410-b52a-842ac1e357ba
kokx 16 년 전
부모
커밋
2dfe71347e

+ 0 - 8
library/Zend/Markup/Parser/Textile.php

@@ -370,14 +370,6 @@ class Zend_Markup_Parser_Textile implements Zend_Markup_Parser_ParserInterface
                     break;
                     break;
             }
             }
         }
         }
-
-        if (!empty($buffer)) {
-            $this->_tokens[] = array(
-                'tag'  => $buffer,
-                'type' => Zend_Markup_Token::TYPE_NONE
-            );
-            $buffer = '';
-        }
     }
     }
 
 
     /**
     /**

+ 3 - 3
library/Zend/Markup/Renderer/Html/HtmlAbstract.php

@@ -21,9 +21,9 @@
  */
  */
 
 
 /**
 /**
- * @see Zend_Markup_Renderer_TagInterface
+ * @see Zend_Markup_Renderer_TokenConverterInterface
  */
  */
-require_once 'Zend/Markup/Renderer/TagInterface.php';
+require_once 'Zend/Markup/Renderer/TokenConverterInterface.php';
 
 
 /**
 /**
  * Tag interface
  * Tag interface
@@ -34,7 +34,7 @@ require_once 'Zend/Markup/Renderer/TagInterface.php';
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
  */
-abstract class Zend_Markup_Renderer_Html_HtmlAbstract implements Zend_Markup_Renderer_TagInterface
+abstract class Zend_Markup_Renderer_Html_HtmlAbstract implements Zend_Markup_Renderer_TokenConverterInterface
 {
 {
 
 
     /**
     /**

+ 20 - 7
library/Zend/Markup/Renderer/RendererAbstract.php

@@ -24,6 +24,10 @@
  * @see Zend_config
  * @see Zend_config
  */
  */
 require_once 'Zend/Config.php';
 require_once 'Zend/Config.php';
+/**
+ * @see Zend_Markup_Renderer_TokenConverterInterface
+ */
+require_once 'Zend/Markup/Renderer/TokenConverterInterface.php';
 
 
 /**
 /**
  * Defines the basic rendering functionality
  * Defines the basic rendering functionality
@@ -162,9 +166,14 @@ abstract class Zend_Markup_Renderer_RendererAbstract
         // check the type
         // check the type
         if ($type & self::TYPE_CALLBACK) {
         if ($type & self::TYPE_CALLBACK) {
             // add a callback tag
             // add a callback tag
-            if (isset($info['callback']) && !($info['callback'] instanceof Zend_Markup_Renderer_TagInterface)) {
-                require_once 'Zend/Markup/Renderer/Exception.php';
-                throw new Zend_Markup_Renderer_Exception("Not a valid tag callback.");
+            if (isset($info['callback'])) {
+                if (!($info['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) {
+                    require_once 'Zend/Markup/Renderer/Exception.php';
+                    throw new Zend_Markup_Renderer_Exception("Not a valid tag callback.");
+                }
+                if (method_exists($info['callback'], 'setRenderer')) {
+                    $info['callback']->setRenderer($this);
+                }
             } else {
             } else {
                 $info['callback'] = null;
                 $info['callback'] = null;
             }
             }
@@ -210,7 +219,7 @@ abstract class Zend_Markup_Renderer_RendererAbstract
      *
      *
      * @return void
      * @return void
      */
      */
-    protected function removeTag($name)
+    public function removeTag($name)
     {
     {
         unset($this->_tags[$name]);
         unset($this->_tags[$name]);
     }
     }
@@ -220,7 +229,7 @@ abstract class Zend_Markup_Renderer_RendererAbstract
      *
      *
      * @return void
      * @return void
      */
      */
-    protected function clearTags()
+    public function clearTags()
     {
     {
         $this->_tags = array();
         $this->_tags = array();
     }
     }
@@ -346,15 +355,19 @@ abstract class Zend_Markup_Renderer_RendererAbstract
         // callback
         // callback
         if ($tag['type'] & self::TYPE_CALLBACK) {
         if ($tag['type'] & self::TYPE_CALLBACK) {
             // load the callback if the tag doesn't exist
             // load the callback if the tag doesn't exist
-            if (!($tag['callback'] instanceof Zend_Markup_Renderer_TagInterface)) {
+            if (!($tag['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) {
                 $class = $this->getPluginLoader()->load($name);
                 $class = $this->getPluginLoader()->load($name);
 
 
                 $tag['callback'] = new $class;
                 $tag['callback'] = new $class;
 
 
-                if (!($tag['callback'] instanceof Zend_Markup_Renderer_TagInterface)) {
+                if (!($tag['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) {
                     require_once 'Zend/Markup/Renderer/Exception.php';
                     require_once 'Zend/Markup/Renderer/Exception.php';
                     throw new Zend_Markup_Renderer_Exception("Callback for tag '$name' found, but it isn't valid.");
                     throw new Zend_Markup_Renderer_Exception("Callback for tag '$name' found, but it isn't valid.");
                 }
                 }
+
+                if (method_exists($tag['callback'], 'setRenderer')) {
+                    $tag['callback']->setRenderer($this);
+                }
             }
             }
             if ($tag['type'] & self::TAG_NORMAL) {
             if ($tag['type'] & self::TAG_NORMAL) {
                 return $tag['callback']->convert($token, $this->_render($token));
                 return $tag['callback']->convert($token, $this->_render($token));

+ 1 - 1
library/Zend/Markup/Renderer/TagInterface.php → library/Zend/Markup/Renderer/TokenConverterInterface.php

@@ -29,7 +29,7 @@
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
  */
-interface Zend_Markup_Renderer_TagInterface
+interface Zend_Markup_Renderer_TokenConverterInterface
 {
 {
 
 
     /**
     /**

+ 14 - 0
tests/Zend/Markup/BbcodeAndHtmlTest.php

@@ -371,6 +371,20 @@ BBCODE;
         $this->assertEquals('<strong>foobar</strong>', $m->render('[b=]foobar[/b]'));
         $this->assertEquals('<strong>foobar</strong>', $m->render('[b=]foobar[/b]'));
     }
     }
 
 
+    public function testRemoveTag()
+    {
+        $this->_markup->removeTag('b');
+
+        $this->assertEquals('[b]bar[/b]', $this->_markup->render('[b]bar[/b]'));
+    }
+
+    public function testClearTags()
+    {
+        $this->_markup->clearTags();
+
+        $this->assertEquals('[i]foo[/i]', $this->_markup->render('[i]foo[/i]'));
+    }
+
 }
 }
 
 
 // Call Zend_Markup_BbcodeAndHtmlTest::main()
 // Call Zend_Markup_BbcodeAndHtmlTest::main()

+ 3 - 3
tests/Zend/Markup/Test/Renderer/Html/Bar.php

@@ -21,9 +21,9 @@
  */
  */
 
 
 /**
 /**
- * @see Zend_Markup_Renderer_Html_HtmlAbstract
+ * @see Zend_Markup_Renderer_TokenConverterInterface
  */
  */
-require_once 'Zend/Markup/Renderer/Html/HtmlAbstract.php';
+require_once 'Zend/Markup/Renderer/TokenConverterInterface.php';
 
 
 /**
 /**
  * Tag interface
  * Tag interface
@@ -34,7 +34,7 @@ require_once 'Zend/Markup/Renderer/Html/HtmlAbstract.php';
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
  */
-class Zend_Markup_Test_Renderer_Html_Bar implements Zend_Markup_Renderer_TagInterface
+class Zend_Markup_Test_Renderer_Html_Bar implements Zend_Markup_Renderer_TokenConverterInterface
 {
 {
 
 
     /**
     /**

+ 10 - 1
tests/Zend/Markup/TextileAndHtmlTest.php

@@ -90,7 +90,7 @@ class Zend_Markup_TextileAndHtmlTest extends PHPUnit_Framework_TestCase
     	$m = $this->_markup;
     	$m = $this->_markup;
 
 
         $this->assertEquals('<p><strong>foo</strong></p>', $m->render('*foo*'));
         $this->assertEquals('<p><strong>foo</strong></p>', $m->render('*foo*'));
-        $this->assertEquals('<p><strong>foo</strong></p>', $m->render('**foo**'));
+        $this->assertEquals('<p><strong>foo</strong> bar</p>', $m->render('**foo** bar'));
         $this->assertEquals('<p><em>foo</em></p>', $m->render('_foo_'));
         $this->assertEquals('<p><em>foo</em></p>', $m->render('_foo_'));
         $this->assertEquals('<p><em>foo</em></p>', $m->render('__foo__'));
         $this->assertEquals('<p><em>foo</em></p>', $m->render('__foo__'));
         $this->assertEquals('<p><cite>foo</cite></p>', $m->render('??foo??'));
         $this->assertEquals('<p><cite>foo</cite></p>', $m->render('??foo??'));
@@ -177,7 +177,16 @@ class Zend_Markup_TextileAndHtmlTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('<p>ZFC(</p>', $this->_markup->render('ZFC('));
         $this->assertEquals('<p>ZFC(</p>', $this->_markup->render('ZFC('));
     }
     }
 
 
+    public function testListCombinedWithText()
+    {
+        $text = <<<TESTLIST
+* foo
+* bar
+baz
 
 
+TESTLIST;
+        $this->assertEquals('<p><ul><li>foo</li><li>bar</li></ul>baz</p>', $this->_markup->render($text));
+    }
 }
 }
 
 
 // Call Zend_Markup_BbcodeTest::main() if this source file is executed directly.
 // Call Zend_Markup_BbcodeTest::main() if this source file is executed directly.