Permalink
Browse files

Merge https://github.com/pear/HTML_BBCodeParser

  • Loading branch information...
2 parents e44cd93 + 39912d6 commit 5328534e756bbf1d5a4c3de1db57b0baf928d9fd @CloCkWeRX CloCkWeRX committed May 19, 2012
View

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,10 @@
+<?php
+require_once 'HTML/BBCodeParser.php';
+
+/**
+* Dummy class that filters need to extend from.
+*/
+class HTML_BBCodeParser_Filter extends HTML_BBCodeParser
+{
+}
+?>
@@ -0,0 +1,71 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/2_02.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Stijn de Reede <sjr@gmx.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+//
+
+/**
+* @package HTML_BBCodeParser
+* @author Stijn de Reede <sjr@gmx.co.uk>
+*/
+
+
+require_once 'HTML/BBCodeParser/Filter.php';
+
+
+
+
+class HTML_BBCodeParser_Filter_Basic extends HTML_BBCodeParser_Filter
+{
+
+ /**
+ * An array of tags parsed by the engine
+ *
+ * @access private
+ * @var array
+ */
+ var $_definedTags = array( 'b' => array( 'htmlopen' => 'strong',
+ 'htmlclose' => 'strong',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'i' => array( 'htmlopen' => 'em',
+ 'htmlclose' => 'em',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'u' => array( 'htmlopen' => 'span style="text-decoration:underline;"',
+ 'htmlclose' => 'span',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 's' => array( 'htmlopen' => 'del',
+ 'htmlclose' => 'del',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'sub' => array( 'htmlopen' => 'sub',
+ 'htmlclose' => 'sub',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'sup' => array( 'htmlopen' => 'sup',
+ 'htmlclose' => 'sup',
+ 'allowed' => 'all',
+ 'attributes'=> array())
+ );
+
+}
+
+
+?>
@@ -0,0 +1,86 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/2_02.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Stijn de Reede <sjr@gmx.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+//
+
+/**
+* @package HTML_BBCodeParser
+* @author Stijn de Reede <sjr@gmx.co.uk>
+*/
+
+
+require_once 'HTML/BBCodeParser/Filter.php';
+
+
+
+
+class HTML_BBCodeParser_Filter_Email extends HTML_BBCodeParser_Filter
+{
+
+ /**
+ * An array of tags parsed by the engine
+ *
+ * @access private
+ * @var array
+ */
+ var $_definedTags = array( 'email' => array( 'htmlopen' => 'a',
+ 'htmlclose' => 'a',
+ 'allowed' => 'none^img',
+ 'attributes'=> array('email' =>'href=%2$smailto:%1$s%2$s')
+
+ )
+ );
+
+
+ /**
+ * Executes statements before the actual array building starts
+ *
+ * This method should be overwritten in a filter if you want to do
+ * something before the parsing process starts. This can be useful to
+ * allow certain short alternative tags which then can be converted into
+ * proper tags with preg_replace() calls.
+ * The main class walks through all the filters and and calls this
+ * method if it exists. The filters should modify their private $_text
+ * variable.
+ *
+ * @return none
+ * @access private
+ * @see $_text
+ * @author Stijn de Reede <sjr@gmx.co.uk>
+ */
+ function _preparse()
+ {
+ $pear=new PEAR();
+ $options = $pear->getStaticProperty('HTML_BBCodeParser','_options');
+ $o = $options['open'];
+ $c = $options['close'];
+ $oe = $options['open_esc'];
+ $ce = $options['close_esc'];
+ $pattern = array( "!(^|\s)([-a-z0-9_.]+@[-a-z0-9.]+\.[a-z]{2,4})!i",
+ "!".$oe."email(".$ce."|\s.*".$ce.")(.*)".$oe."/email".$ce."!Ui");
+ $replace = array( "\\1".$o."email=\\2".$c."\\2".$o."/email".$c,
+ $o."email=\\2\\1\\2".$o."/email".$c);
+ $this->_preparsed = preg_replace($pattern, $replace, $this->_text);
+ }
+
+
+}
+
+
+?>
@@ -0,0 +1,97 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/2_02.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Stijn de Reede <sjr@gmx.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+//
+
+/**
+* @package HTML_BBCodeParser
+* @author Stijn de Reede <sjr@gmx.co.uk>
+*/
+
+
+require_once 'HTML/BBCodeParser/Filter.php';
+
+
+
+
+class HTML_BBCodeParser_Filter_Extended extends HTML_BBCodeParser_Filter
+{
+
+ /**
+ * An array of tags parsed by the engine
+ *
+ * @access private
+ * @var array
+ */
+ var $_definedTags = array(
+ 'color' => array( 'htmlopen' => 'span',
+ 'htmlclose' => 'span',
+ 'allowed' => 'all',
+ 'attributes'=> array('color' =>'style=%2$scolor:%1$s%2$s')),
+ 'size' => array( 'htmlopen' => 'span',
+ 'htmlclose' => 'span',
+ 'allowed' => 'all',
+ 'attributes'=> array('size' =>'style=%2$sfont-size:%1$spt%2$s')),
+ 'font' => array( 'htmlopen' => 'span',
+ 'htmlclose' => 'span',
+ 'allowed' => 'all',
+ 'attributes'=> array('font' =>'style=%2$sfont-family:%1$s%2$s')),
+ 'align' => array( 'htmlopen' => 'div',
+ 'htmlclose' => 'div',
+ 'allowed' => 'all',
+ 'attributes'=> array('align' =>'style=%2$stext-align:%1$s%2$s')),
+ 'quote' => array('htmlopen' => 'q',
+ 'htmlclose' => 'q',
+ 'allowed' => 'all',
+ 'attributes'=> array('quote' =>'cite=%2$s%1$s%2$s')),
+ 'code' => array('htmlopen' => 'code',
+ 'htmlclose' => 'code',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h1' => array('htmlopen' => 'h1',
+ 'htmlclose' => 'h1',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h2' => array('htmlopen' => 'h2',
+ 'htmlclose' => 'h2',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h3' => array('htmlopen' => 'h3',
+ 'htmlclose' => 'h3',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h4' => array('htmlopen' => 'h4',
+ 'htmlclose' => 'h4',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h5' => array('htmlopen' => 'h5',
+ 'htmlclose' => 'h5',
+ 'allowed' => 'all',
+ 'attributes'=> array()),
+ 'h6' => array('htmlopen' => 'h6',
+ 'htmlclose' => 'h6',
+ 'allowed' => 'all',
+ 'attributes'=> array())
+
+ );
+
+
+}
+
+?>
@@ -0,0 +1,79 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2003 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/2_02.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Stijn de Reede <sjr@gmx.co.uk> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+//
+
+/**
+* @package HTML_BBCodeParser
+* @author Stijn de Reede <sjr@gmx.co.uk>
+*/
+require_once 'HTML/BBCodeParser/Filter.php';
+
+class HTML_BBCodeParser_Filter_Images extends HTML_BBCodeParser_Filter
+{
+
+ /**
+ * An array of tags parsed by the engine
+ *
+ * @access private
+ * @var array
+ */
+ var $_definedTags = array(
+ 'img' => array(
+ 'htmlopen' => 'img',
+ 'htmlclose' => '',
+ 'allowed' => 'none',
+ 'attributes'=> array(
+ 'img' => 'src=%2$s%1$s%2$s',
+ 'w' => 'width=%2$s%1$d%2$s',
+ 'h' => 'height=%2$s%1$d%2$s',
+ 'alt' => 'alt=%2$s%1$s%2$s',
+ )
+ )
+ );
+
+ /**
+ * Executes statements before the actual array building starts
+ *
+ * This method should be overwritten in a filter if you want to do
+ * something before the parsing process starts. This can be useful to
+ * allow certain short alternative tags which then can be converted into
+ * proper tags with preg_replace() calls.
+ * The main class walks through all the filters and and calls this
+ * method if it exists. The filters should modify their private $_text
+ * variable.
+ *
+ * @return none
+ * @access private
+ * @see $_text
+ * @author Stijn de Reede <sjr@gmx.co.uk>
+ */
+ function _preparse()
+ {
+ $options = PEAR::getStaticProperty('HTML_BBCodeParser','_options');
+ $o = $options['open'];
+ $c = $options['close'];
+ $oe = $options['open_esc'];
+ $ce = $options['close_esc'];
+ $this->_preparsed = preg_replace(
+ "!".$oe."img(\s?.*)".$ce."(.*)".$oe."/img".$ce."!Ui",
+ $o."img=\"\$2\" alt=\"\"\$1".$c.$o."/img".$c,
+ $this->_text);
+ }
+}
Oops, something went wrong.

0 comments on commit 5328534

Please sign in to comment.