0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
b2evolution
/
4.1.5b-1.bak
/
standard
/
htdocs
/
plugins
/
[
Home
]
File: _texturize.plugin.php
<?php /** * This file implements the Texturize plugin for b2evolution * * @author WordPress team - http://sourceforge.net/project/memberlist.php?group_id=51422 * b2evo: 1 notice fix. * * @package plugins */ if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' ); /** * @package plugins */ class texturize_plugin extends Plugin { var $code = 'b2WPTxrz'; var $name = 'Texturize'; var $priority = 90; var $version = '2.2-dev'; var $apply_rendering = 'opt-in'; var $group = 'rendering'; var $short_desc; var $long_desc; var $number_of_installs = 1; /** * Init */ function PluginInit( & $params ) { $this->short_desc = T_('Smart quotes + additional typographic replacements.'); $this->long_desc = T_('This renderer will replace standard and double quotes with typographic quotes were appropriate.<br /> It will also perform the following replacements: <ul> <li>--- to —</li> <li>-- to –</li> <li>... to …</li> </ul>' ); } /** * Perform rendering * * @param array Associative array of parameters * 'data': the data (by reference). You probably want to modify this. * 'format': see {@link format_to_output()}. Only 'htmlbody' and 'entityencoded' will arrive here. * @return boolean true if we can render something for the required output format */ function RenderItemAsHtml( & $params ) { // texturize all content not in code/pre blocks $params['data'] = callback_on_non_matching_blocks( $params['data'], '#<(pre|code)[\s\S]+?/\1>#i', array( $this, 'texturize_block' ) ); } /** * Texturize content * * @param string $content * @return string texturized content */ function texturize_block( $content ) { $output = ''; $textarr = preg_split("/(<.*>)/Us", $content, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between $stop = count($textarr); $next = true; // loop stuff for ($i = 0; $i < $stop; $i++) { $curl = $textarr[$i]; if (strlen($curl) && '<' != $curl{0} && $next) { // If it's not a tag $curl = str_replace('---', '—', $curl); $curl = str_replace('--', '–', $curl); $curl = str_replace("...", '…', $curl); $curl = str_replace('``', '“', $curl); // This is a hack, look at this more later. It works pretty well though. $cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round"); $cockneyreplace = array("’tain’t","’twere","’twas","’tis","’twill","’til","’bout","’nuff","’round"); $curl = str_replace($cockney, $cockneyreplace, $curl); $curl = preg_replace("/'s/", '’s', $curl); $curl = preg_replace("/'(\d\d(?:’|')?s)/", "’$1", $curl); $curl = preg_replace('/(\s|\A|")\'/', '$1‘', $curl); $curl = preg_replace('/(\d+)"/', '$1″', $curl); $curl = preg_replace("/(\d+)'/", '$1′', $curl); $curl = preg_replace("/(\S)'([^'\s])/", "$1’$2", $curl); $curl = preg_replace('/(\s|\A)"(?!\s)/', '$1“$2', $curl); $curl = preg_replace('/"(\s|\Z)/', '”$1', $curl); $curl = preg_replace("/'([\s.]|\Z)/", '’$1', $curl); $curl = preg_replace("/\(tm\)/i", '™', $curl); $curl = preg_replace("/\(c\)/i", '©', $curl); $curl = preg_replace("/\(r\)/i", '®', $curl); $curl = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $curl); $curl = str_replace("''", '”', $curl); $curl = preg_replace('/(d+)x(\d+)/', "$1×$2", $curl); } elseif (strstr($curl, '<code') || strstr($curl, '<pre') || strstr($curl, '<kbd' || strstr($curl, '<style') || strstr($curl, '<script'))) { // strstr is fast $next = false; } else { $next = true; } $output .= $curl; } $content = $output; return $content; } /** * The same as for HTML. * * @uses RenderItemAsHtml() */ function RenderItemAsXml( & $params ) { $this->RenderItemAsHtml( $params ); } } /* * $Log: _texturize.plugin.php,v $ */ ?>