, etc.
+ if(preg_match('/<(code|pre|kbd|notextile)>/i',$line)){$codepre = true; }
+ if(preg_match('/<\/(code|pre|kbd|notextile)>/i',$line)){$codepre = false; }
+
+ if(!preg_match("/<.*>/",$line) && $codepre == false){
+ $line = preg_replace($glyph_search,$glyph_replace,$line);
+ }
+
+ # convert htmlspecial if between
+ if ($codepre == true){
+ $line = htmlspecialchars($line,ENT_NOQUOTES,"UTF-8");
+ $line = str_replace("<pre>","",$line);
+ $line = str_replace("<code>","",$line);
+ $line = str_replace("<notextile>","",$line);
+ $line = str_replace("<kbd>","",$line);
+ }
+
+ # each line gets pushed to a new array
+ $glyph_out[] = $line;
+ }
+ # $text is now the new array, cast to a string
+ $text = implode('',$glyph_out);
+ }
+
+ $text = preg_replace("/(\S)(_*)([[:punct:]]*) *\n([^#*\s])/", "$1$2$3
$4", $text);
+
+ $text = str_replace("l>
", "l>\n", $text);
+
+ $text = preg_split("/\n/",$text);
+
+ array_push($text," ");
+
+ $list = '';
+ $pre = false;
+
+ $block_find = array(
+ '/^\s?\*\s(.*)/', # bulleted list *
+ '/^\s?#\s(.*)/', # numeric list #
+ '/^bq\. (.*)/', # blockquote bq.
+ '/^h(\d)\(([[:alnum:]]+)\)\.\s(.*)/', # header hn(class). w/ css class
+ '/^h(\d)\. (.*)/', # plain header hn.
+ '/^p\(([[:alnum:]]+)\)\.\s(.*)/', # para p(class). w/ css class
+ '/^p\. (.*)/i', # plain paragraph
+ '/^([^\t ]+.*)/i' # remaining plain paragraph
+ );
+
+ $block_replace = array(
+ "\t\t$1 ",
+ "\t\t\t$1 ",
+ "\t$1
",
+ "\t$3 $4",
+ "\t$2 $3",
+ "\t$2
$3",
+ "\t$1
",
+ "\t$1
$2"
+ );
+
+ foreach($text as $line){
+
+ if(preg_match('//i',$line)){$pre = true; }
+
+ if ($pre == false){
+ $line = preg_replace($block_find,$block_replace,$line);
+ }
+
+ if ($pre == true){
+ $line = str_replace("
","\n",$line);
+ }
+ if(preg_match('/<\/pre>/i',$line)){$pre = false; }
+
+ if ($list == '' && preg_match('/^\t\t
/',$line)){
+ $list = "ul";
+ $line = preg_replace('/^(\t\t .*)/',"\t\n$1",$line);
+
+ } else if ($list == '' && preg_match('/^\t\t\t- /',$line)){
+ $list = "ol";
+ $line = preg_replace('/^\t(\t\t
- .*)/',"\t
\n$1",$line);
+
+ # at the end of a ul
+ } else if ($list == 'ul' && !preg_match('/^\t\t- /',$line)){
+ $list = '';
+ $line = preg_replace('/^(.*)$/',"\t
\n$1",$line);
+
+ # at the end of a ol
+ } else if ($list == 'ol' && !preg_match('/^\t\t\t /',$line)){
+ $list = '';
+ $line = preg_replace('/^(.*)$/',"\t\n$1",$line);
+ }
+
+ $block_out[] = $line;
+ }
+ $text = implode("\n",$block_out);
+ $text = preg_replace('/<\/?notextile>/', "",$text);
+ $text = str_replace("x%x%","&",$text);
+ $text = str_replace("
","
\n",$text);
+ return $text;
+}
+
+function callback_url($text,$title='',$url) {
+ $out = 'a href="'.$url.'"';
+ $out.=($title!='')?' title="'.$title.'"':'';
+ $out.='>$text';
+ return $out;
+ }
+
+
+
+function textile_popup_help($name,$helpvar,$windowW,$windowH) {
+ $out = $name;
+ $out .= ' ?
';
+ print $out;
+}
+
+
+function encode_high($text) {
+ $cmap = cmap();
+ return mb_encode_numericentity($text, $cmap, "UTF-8");
+}
+
+
+function decode_high($text) {
+ $cmap = cmap();
+ return mb_decode_numericentity($text, $cmap, "UTF-8");
+}
+
+
+function cmap() {
+
+ $f = 0xffff;
+
+ $cmap = array(
+ 160, 255, 0, $f,
+ 402, 402, 0, $f,
+ 913, 929, 0, $f,
+ 931, 937, 0, $f,
+ 945, 969, 0, $f,
+ 977, 978, 0, $f,
+ 982, 982, 0, $f,
+ 8226, 8226, 0, $f,
+ 8230, 8230, 0, $f,
+ 8242, 8243, 0, $f,
+ 8254, 8254, 0, $f,
+ 8260, 8260, 0, $f,
+ 8465, 8465, 0, $f,
+ 8472, 8472, 0, $f,
+ 8476, 8476, 0, $f,
+ 8482, 8482, 0, $f,
+ 8501, 8501, 0, $f,
+ 8592, 8596, 0, $f,
+ 8629, 8629, 0, $f,
+ 8656, 8660, 0, $f,
+ 8704, 8704, 0, $f,
+ 8706, 8707, 0, $f,
+ 8709, 8709, 0, $f,
+ 8711, 8713, 0, $f,
+ 8715, 8715, 0, $f,
+ 8719, 8719, 0, $f,
+ 8721, 8722, 0, $f,
+ 8727, 8727, 0, $f,
+ 8730, 8730, 0, $f,
+ 8733, 8734, 0, $f,
+ 8736, 8736, 0, $f,
+ 8743, 8747, 0, $f,
+ 8756, 8756, 0, $f,
+ 8764, 8764, 0, $f,
+ 8773, 8773, 0, $f,
+ 8776, 8776, 0, $f,
+ 8800, 8801, 0, $f,
+ 8804, 8805, 0, $f,
+ 8834, 8836, 0, $f,
+ 8838, 8839, 0, $f,
+ 8853, 8853, 0, $f,
+ 8855, 8855, 0, $f,
+ 8869, 8869, 0, $f,
+ 8901, 8901, 0, $f,
+ 8968, 8971, 0, $f,
+ 9001, 9002, 0, $f,
+ 9674, 9674, 0, $f,
+ 9824, 9824, 0, $f,
+ 9827, 9827, 0, $f,
+ 9829, 9830, 0, $f,
+ 338, 339, 0, $f,
+ 352, 353, 0, $f,
+ 376, 376, 0, $f,
+ 710, 710, 0, $f,
+ 732, 732, 0, $f,
+ 8194, 8195, 0, $f,
+ 8201, 8201, 0, $f,
+ 8204, 8207, 0, $f,
+ 8211, 8212, 0, $f,
+ 8216, 8218, 0, $f,
+ 8218, 8218, 0, $f,
+ 8220, 8222, 0, $f,
+ 8224, 8225, 0, $f,
+ 8240, 8240, 0, $f,
+ 8249, 8250, 0, $f,
+ 8364, 8364, 0, $f
+ );
+
+ return $cmap;
+}
+
+
+function linkit($text,$title,$url){
+ $url = preg_replace("/&(?!amp;)/","&",$url);
+ $out = '';
+
+ return $out;
+}
+
+// And now for the filters
+remove_filter('the_content', 'wpautop');
+remove_filter('the_excerpt', 'wpautop');
+remove_filter('comment_text', 'wpautop');
+
+remove_filter('the_content', 'wptexturize');
+remove_filter('the_excerpt', 'wptexturize');
+remove_filter('comment_text', 'wptexturize');
+
+add_filter('the_content', 'textile', 6);
+add_filter('the_excerpt', 'textile', 6);
+add_filter('comment_text', 'textile', 6);
+
+?>
\ No newline at end of file
diff --git a/wp-content/plugins/textile2.php b/wp-content/plugins/textile2.php
new file mode 100644
index 0000000000..a96c8e5554
--- /dev/null
+++ b/wp-content/plugins/textile2.php
@@ -0,0 +1,782 @@
+Dean Allen's Humane Web Text Generator, also known as Textile. Version 2 adds a lot of flexibility that makes it almost a HTML meta-language. As a cost, it's slower. If you use this plugin you should disable Textile 1 and Markdown, as they don't play well together.
+Author: Dean Allen
+Author URI: http://www.textism.com/?wp
+*/
+
+/*
+
+This is Textile
+A Humane Web Text Generator
+
+Version 2.0 beta
+8 July, 2003
+
+Copyright (c) 2003, Dean Allen, www.textism.com
+All rights reserved.
+
+_______
+LICENSE
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name Textile nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+*/
+
+$hlgn = "(?:\<(?!>)|(?|\<\>|\=|[()]+)";
+$vlgn = "[\-^~]";
+$clas = "(?:\([^)]+\))";
+$lnge = "(?:\[[^]]+\])";
+$styl = "(?:\{[^}]+\})";
+$cspn = "(?:\\\\\d+)";
+$rspn = "(?:\/\d+)";
+$textile_a = "(?:$hlgn?$vlgn?|$vlgn?$hlgn?)";
+$textile_s = "(?:$cspn?$rspn?|$rspn?$cspn?)";
+$textile_c = "(?:$clas?$styl?$lnge?|$styl?$lnge?$clas?|$lnge?$styl?$clas?)";
+$pnct = '[\!"#\$%&\'()\*\+,\-\./:;<=>\?@\[\\\]\^_`{\|}\~]';
+
+function textile($text,$lite='') {
+
+ if (get_magic_quotes_gpc()==1)
+ $text = stripslashes($text);
+
+ $text = incomingEntities($text);
+ $text = encodeEntities($text);
+ $text = fixEntities($text);
+ $text = cleanWhiteSpace($text);
+
+ $text = getRefs($text);
+
+ $text = noTextile($text);
+ $text = image($text);
+ $text = links($text);
+ $text = span($text);
+ $text = superscript($text);
+ $text = footnoteRef($text);
+ $text = code($text);
+ $text = glyphs($text);
+ $text = retrieve($text);
+
+ if ($lite=='') {
+ $text = lists($text);
+ $text = table($text);
+ $text = block($text);
+ }
+
+ /* clean up */
+ $text = preg_replace('/<\/?notextile>/', "",$text);
+
+ /* turn the temp char back to an ampersand entity */
+ $text = str_replace("x%x%","&",$text);
+
+ $text = str_replace("
","
\n",$text);
+
+ return trim($text);
+}
+
+function pba($in,$element="") // "parse block attributes"
+{
+ global $hlgn,$vlgn,$clas,$styl,$cspn,$rspn,$textile_a,$textile_s,$textile_c;
+
+ $style=''; $class=''; $language=''; $colspan=''; $rowspan=''; $id=''; $atts='';
+
+ if (!empty($in)) {
+ $matched = $in;
+ if($element=='td'){
+ if(preg_match("/\\\\(\d+)/",$matched,$csp)) $colspan=$csp[1];
+ if(preg_match("/\/(\d+)/",$matched,$rsp)) $rowspan=$rsp[1];
+
+ if (preg_match("/($vlgn)/",$matched,$vert))
+ $style[] = "vertical-align:".vAlign($vert[1]).";";
+ }
+
+ if(preg_match("/\{([^}]*)\}/",$matched,$sty)) {
+ $style[]=$sty[1].';';
+ $matched = str_replace($sty[0],'',$matched);
+ }
+
+ if(preg_match("/\[([^)]+)\]/U",$matched,$lng)) {
+ $language=$lng[1];
+ $matched = str_replace($lng[0],'',$matched);
+ }
+
+ if(preg_match("/\(([^()]+)\)/U",$matched,$cls)) {
+ $class=$cls[1];
+ $matched = str_replace($cls[0],'',$matched);
+ }
+
+ if(preg_match("/([(]+)/",$matched,$pl)) {
+ $style[] = "padding-left:".strlen($pl[1])."em;";
+ $matched = str_replace($pl[0],'',$matched);
+ }
+ if(preg_match("/([)]+)/",$matched,$pr)) {
+ dump($pr);
+ $style[] = "padding-right:".strlen($pr[1])."em;";
+ $matched = str_replace($pr[0],'',$matched);
+ }
+
+ if (preg_match("/($hlgn)/",$matched,$horiz))
+ $style[] = "text-align:".hAlign($horiz[1]).";";
+
+ if (preg_match("/^(.*)#(.*)$/",$class,$ids)) {
+ $id = $ids[2];
+ $class = $ids[1];
+ }
+
+ if($style) $atts.=' style="'.join("",$style).'"';
+ if($class) $atts.=' class="'.$class.'"';
+ if($language) $atts.=' lang="'.$language.'"';
+ if($id) $atts.=' id="'.$id.'"';
+ if($colspan) $atts.=' colspan="'.$colspan.'"';
+ if($rowspan) $atts.=' rowspan="'.$rowspan.'"';
+
+ return $atts;
+ } else {
+ return '';
+ }
+}
+
+// -------------------------------------------------------------
+function table($text)
+{
+ global $textile_a,$textile_c,$textile_s;
+ $text = $text."\n\n";
+ return preg_replace_callback("/^(?:table(_?$textile_s$textile_a$textile_c)\. ?\n)?^($textile_a$textile_c\.? ?\|.*\|)\n\n/smU",
+ "fTable",$text);
+}
+
+// -------------------------------------------------------------
+function fTable($matches)
+{
+ global $textile_s,$textile_a,$textile_c;
+ $tatts = pba($matches[1],'table');
+
+ foreach(preg_split("/\|$/m",$matches[2],-1,PREG_SPLIT_NO_EMPTY) as $row){
+ if (preg_match("/^($textile_a$textile_c\. )(.*)/m",$row,$rmtch)) {
+ $ratts = pba($rmtch[1],'tr');
+ $row = $rmtch[2];
+ } else $ratts = '';
+
+ foreach(explode("|",$row) as $cell){
+ $ctyp = "d";
+ if (preg_match("/^_/",$cell)) $ctyp = "h";
+ if (preg_match("/^(_?$textile_s$textile_a$textile_c\. )(.*)/",$cell,$cmtch)) {
+ $catts = pba($cmtch[1],'td');
+ $cell = $cmtch[2];
+ } else $catts = '';
+
+ if(trim($cell)!='')
+ $cells[] = "\t\t\t$cell ";
+ }
+ $rows[] = "\t\t\n".join("\n",$cells)."\n\t\t ";
+ unset($cells,$catts);
+ }
+ return "\t\n".join("\n",$rows)."\n\t
\n\n";
+}
+
+
+// -------------------------------------------------------------
+function lists($text)
+{
+ global $textile_a,$textile_c;
+ return preg_replace_callback("/^([#*]+$textile_c .*)$(?![^#*])/smU","fList",$text);
+}
+
+// -------------------------------------------------------------
+function fList($m)
+{
+ global $textile_a,$textile_c;
+ $text = explode("\n",$m[0]);
+ foreach($text as $line){
+ $nextline = next($text);
+ if(preg_match("/^([#*]+)($textile_a$textile_c) (.*)$/s",$line,$m)) {
+ list(,$tl,$atts,$content) = $m;
+ $nl = preg_replace("/^([#*]+)\s.*/","$1",$nextline);
+ if(!isset($lists[$tl])){
+ $lists[$tl] = true;
+ $atts = pba($atts);
+ $line = "\t<".lT($tl)."l$atts>\n\t".$content;
+ } else {
+ $line = "\t\t ".$content;
+ }
+
+ if ($nl===$tl){
+ $line .= " ";
+ } elseif($nl=="*" or $nl=="#") {
+ $line .= " \n\t".lT($tl)."l>\n\t";
+ unset($lists[$tl]);
+ }
+ if (!$nl) {
+ foreach($lists as $k=>$v){
+ $line .= "\n\t".lT($k)."l>";
+ unset($lists[$k]);
+ }
+ }
+ }
+ $out[] = $line;
+ }
+ return join("\n",$out);
+}
+
+// -------------------------------------------------------------
+function lT($in)
+{
+ return preg_match("/^#+/",$in) ? 'o' : 'u';
+}
+
+// -------------------------------------------------------------
+function block($text)
+{
+ global $textile_a,$textile_c;
+
+ $pre = false;
+ $find = array('bq','h[1-6]','fn\d+','p');
+
+ $text = preg_replace("/(.+)\n(?![#*\s|])/",
+ "$1
", $text);
+
+ $text = explode("\n",$text);
+ array_push($text," ");
+
+ foreach($text as $line) {
+ if (preg_match('//i',$line)) { $pre = true; }
+ foreach($find as $tag){
+ $line = ($pre==false)
+ ? preg_replace_callback("/^($tag)($textile_a$textile_c)\.(?::(\S+))? (.*)$/",
+ "fBlock",$line)
+ : $line;
+ }
+
+ $line = preg_replace('/^(?!\t|<\/?pre|<\/?code|$| )(.*)/',"\t$1
",$line);
+
+ $line=($pre==true) ? str_replace("
","\n",$line):$line;
+ if (preg_match('/<\/pre>/i',$line)) { $pre = false; }
+
+ $out[] = $line;
+ }
+ return join("\n",$out);
+}
+
+// -------------------------------------------------------------
+function fBlock($m)
+{
+# dump($m);
+ list(,$tag,$atts,$cite,$content) = $m;
+
+ $atts = pba($atts);
+
+ if(preg_match("/fn(\d+)/",$tag,$fns)){
+ $tag = 'p';
+ $atts.= ' id="fn'.$fns[1].'"';
+ $content = ''.$fns[1].' '.$content;
+ }
+
+ $start = "\t<$tag";
+ $end = "$tag>";
+
+ if ($tag=="bq") {
+ $cite = checkRefs($cite);
+ $cite = ($cite!='') ? ' cite="'.$cite.'"' : '';
+ $start = "\t\n\t\t\n\t
";
+ }
+
+ return "$start$atts>$content$end";
+}
+
+
+// -------------------------------------------------------------
+function span($text)
+{
+ global $textile_c,$pnct;
+ $qtags = array('\*\*','\*','\?\?','-','__','_','%','\+','~');
+
+ foreach($qtags as $f) {
+ $text = preg_replace_callback(
+ "/(?<=^|\s|\>|[[:punct:]]|[{(\[])
+ ($f)
+ ($textile_c)
+ (?::(\S+))?
+ (\w.+\w)
+ ([[:punct:]]*)
+ $f
+ (?=[])}]|[[:punct:]]+|\s|$)
+ /xmU","fSpan",$text);
+ }
+ return $text;
+}
+
+// -------------------------------------------------------------
+function fSpan($m)
+{
+# dump($m);
+ global $textile_c;
+ $qtags = array(
+ '*' => 'b',
+ '**' => 'strong',
+ '??' => 'cite',
+ '_' => 'em',
+ '__' => 'i',
+ '-' => 'del',
+ '%' => 'span',
+ '+' => 'ins',
+ '~' => 'sub');
+
+ list(,$tag,$atts,$cite,$content,$end) = $m;
+ $tag = $qtags[$tag];
+ $atts = pba($atts);
+ $atts.= ($cite!='') ? 'cite="'.$cite.'"' : '';
+
+ return "<$tag$atts>$content$end$tag>";
+}
+
+// -------------------------------------------------------------
+function links($text)
+{
+ global $textile_c;
+ return preg_replace_callback('/
+ ([\s[{(]|[[:punct:]])? # $pre
+ " # start
+ ('.$textile_c.') # $atts
+ ([^"]+) # $text
+ \s?
+ (?:\(([^)]+)\)(?="))? # $title
+ ":
+ (\S+\b) # $url
+ (\/)? # $slash
+ ([^\w\/;]*) # $post
+ (?=\s|$)
+ /Ux',"fLink",$text);
+}
+
+// -------------------------------------------------------------
+function fLink($m)
+{
+ list(,$pre,$atts,$text,$title,$url,$slash,$post) = $m;
+
+ $url = checkRefs($url);
+
+ $atts = pba($atts);
+ $atts.= ($title!='') ? ' title="'.$title.'"' : '';
+
+ $atts = ($atts!='') ? shelve($atts) : '';
+
+ return $pre.''.$text.''.$post;
+
+}
+
+// -------------------------------------------------------------
+function getRefs($text)
+{
+ return preg_replace_callback("/(?<=^|\s)\[(.+)\]((?:http:\/\/|\/)\S+)(?=\s|$)/U",
+ "refs",$text);
+}
+
+// -------------------------------------------------------------
+function refs($m)
+{
+ list(,$flag,$url) = $m;
+ $GLOBALS['urlrefs'][$flag] = $url;
+ return '';
+}
+
+// -------------------------------------------------------------
+function checkRefs($text)
+{
+ global $urlrefs;
+ return (isset($urlrefs[$text])) ? $urlrefs[$text] : $text;
+}
+
+// -------------------------------------------------------------
+function image($text)
+{
+ global $textile_c;
+ return preg_replace_callback("/
+ \! # opening
+ (\<|\=|\>)? # optional alignment atts
+ ($textile_c) # optional style,class atts
+ (?:\. )? # optional dot-space
+ ([^\s(!]+) # presume this is the src
+ \s? # optional space
+ (?:\(([^\)]+)\))? # optional title
+ \! # closing
+ (?::(\S+))? # optional href
+ (?=\s|$) # lookahead: space or end of string
+ /Ux","fImage",$text);
+}
+
+// -------------------------------------------------------------
+function fImage($m)
+{
+ list(,$algn,$atts,$url) = $m;
+ $atts = pba($atts);
+ $atts.= ($algn!='') ? ' align="'.iAlign($algn).'"' : '';
+ $atts.= (isset($m[4])) ? ' title="'.$m[4].'"' : '';
+ $size = @getimagesize($url);
+ if($size) $atts.= " $size[3]";
+
+ $href = (isset($m[5])) ? checkRefs($m[5]) : '';
+ $url = checkRefs($url);
+
+ $out = '';
+ $out.= ($href!='') ? '' : '';
+ $out.= '
';
+ $out.= ($href!='') ? '' : '';
+
+ return $out;
+}
+
+// -------------------------------------------------------------
+function code($text)
+{
+ global $pnct;
+ return preg_replace_callback("/
+ (?:^|(?<=[\s\(])|([[{])) # 1 open bracket?
+ @ # opening
+ (?:\|(\w+)\|)? # 2 language
+ (.+) # 3 code
+ @ # closing
+ (?:$|([\]}])|
+ (?=[[:punct:]]{1,2}|
+ \s)) # 4 closing bracket?
+ /Ux","fCode",$text);
+}
+
+// -------------------------------------------------------------
+function fCode($m)
+{
+ list(,$before,$lang,$code,$after) = $m;
+ $lang = ($lang!='') ? ' language="'.$lang.'"' : '';
+ return $before.''.detextile($code).'
'.$after;
+}
+
+// -------------------------------------------------------------
+function shelve($val)
+{
+ $GLOBALS['shelf'][] = $val;
+ return ' <'.count($GLOBALS['shelf']).'>';
+}
+
+// -------------------------------------------------------------
+function retrieve($text)
+{
+ global $shelf;
+ $i = 0;
+ if(is_array($shelf)) {
+ foreach($shelf as $r){
+ $i++;
+ $text = str_replace("<$i>",$r,$text);
+ }
+ }
+ return $text;
+}
+
+// -------------------------------------------------------------
+function incomingEntities($text)
+{
+ /* turn any incoming ampersands into a dummy character for now.
+ This uses a negative lookahead for alphanumerics followed by a semicolon,
+ implying an incoming html entity, to be skipped */
+
+ return preg_replace("/&(?![a-z]+;|#[0-9]+;)/i","x%x%",$text);
+}
+
+// -------------------------------------------------------------
+function encodeEntities($text)
+{
+ /* Convert high and low ascii to entities. If multibyte string functions are
+ available (on by default in php 4.3+), we convert using unicode mapping as
+ defined in the function encode_high(). If not, we use php's nasty
+ built-in htmlentities() */
+
+ return (function_exists('mb_encode_numericentity'))
+ ? encode_high($text)
+ : htmlentities($text,ENT_NOQUOTES,"utf-8");
+}
+
+// -------------------------------------------------------------
+function fixEntities($text)
+{
+ /* de-entify any remaining angle brackets or ampersands */
+ return str_replace(array(">", "<", "&"),
+ array(">", "<", "&"), $text);
+}
+
+// -------------------------------------------------------------
+function cleanWhiteSpace($text)
+{
+ $out = str_replace(array("\r\n","\t"), array("\n",''), $text);
+ $out = preg_replace("/\n{3,}/","\n\n",$out);
+ $out = preg_replace("/\n *\n/","\n\n",$out);
+ $out = preg_replace('/"$/',"\" ", $out);
+ return $out;
+}
+
+// -------------------------------------------------------------
+function noTextile($text)
+{
+ return preg_replace('/(^|\s)==(.*)==(\s|$)?/msU',
+ '$1$2 $3',$text);
+}
+
+// -------------------------------------------------------------
+function superscript($text)
+{
+ return preg_replace('/\^(.*)\^/mU','$1',$text);
+}
+
+// -------------------------------------------------------------
+function footnoteRef($text)
+{
+ return preg_replace('/\b\[([0-9]+)\](\s)?/U',
+ '$1$2',$text);
+}
+
+// -------------------------------------------------------------
+function glyphs($text)
+{
+ // fix: hackish
+ $text = preg_replace('/"\z/',"\" ", $text);
+
+ $glyph_search = array(
+ '/([^\s[{(>])?\'(?(1)|(?=\s|s\b|[[:punct:]]))/', // single closing
+ '/\'/', // single opening
+ '/([^\s[{(>])?"(?(1)|(?=\s|[[:punct:]]))/', // double closing
+ '/"/', // double opening
+ '/\b( )?\.{3}/', // ellipsis
+ '/\b([A-Z][A-Z0-9]{2,})\b(?:[(]([^)]*)[)])/', // 3+ uppercase acronym
+ '/(^|[^"][>\s])([A-Z][A-Z0-9 ]{2,})([^$1', // 3+ uppercase acronym
+ '$1$2$3', // 3+ uppercase caps
+ '—', // em dash
+ ' – ', // en dash
+ '$1×$2', // dimension sign
+ '™', // trademark
+ '®', // registered
+ '©'); // copyright
+
+
+$codepre = false;
+ /* if no html, do a simple search and replace... */
+if (!preg_match("/<.*>/",$text)) {
+ $text = preg_replace($glyph_search,$glyph_replace,$text);
+ return $text;
+} else {
+ $text = preg_split("/(<.*>)/U",$text,-1,PREG_SPLIT_DELIM_CAPTURE);
+ foreach($text as $line) {
+ $offtags = ('code|pre|kbd|notextile');
+
+ /* matches are off if we're between , etc. */
+ if (preg_match('/<('.$offtags.')>/i',$line)) $codepre = true;
+ if (preg_match('/<\/('.$offtags.')>/i',$line)) $codepre = false;
+
+ if (!preg_match("/<.*>/",$line) && $codepre == false) {
+ $line = preg_replace($glyph_search,$glyph_replace,$line);
+ }
+
+ /* do htmlspecial if between */
+ if ($codepre == true) {
+ $line = htmlspecialchars($line,ENT_NOQUOTES,"UTF-8");
+ $line = preg_replace('/<(\/?'.$offtags.')>/',"<$1>",$line);
+ }
+
+ $glyph_out[] = $line;
+ }
+ return join('',$glyph_out);
+}
+}
+
+// -------------------------------------------------------------
+function iAlign($in)
+{
+ $vals = array(
+ '<'=>'left',
+ '='=>'center',
+ '>'=>'right');
+ return (isset($vals[$in])) ? $vals[$in] : '';
+}
+
+// -------------------------------------------------------------
+function hAlign($in)
+{
+ $vals = array(
+ '<'=>'left',
+ '='=>'center',
+ '>'=>'right',
+ '<>'=>'justify');
+ return (isset($vals[$in])) ? $vals[$in] : '';
+}
+
+// -------------------------------------------------------------
+function vAlign($in)
+{
+ $vals = array(
+ '^'=>'top',
+ '-'=>'middle',
+ '~'=>'bottom');
+ return (isset($vals[$in])) ? $vals[$in] : '';
+}
+
+// -------------------------------------------------------------
+function encode_high($text,$charset="UTF-8")
+{
+ $cmap = cmap();
+ return mb_encode_numericentity($text, $cmap, $charset);
+}
+
+// -------------------------------------------------------------
+function decode_high($text,$charset="UTF-8")
+{
+ $cmap = cmap();
+ return mb_decode_numericentity($text, $cmap, $charset);
+}
+
+// -------------------------------------------------------------
+function cmap()
+{
+ $f = 0xffff;
+ $cmap = array(
+ 160, 255, 0, $f,
+ 402, 402, 0, $f,
+ 913, 929, 0, $f,
+ 931, 937, 0, $f,
+ 945, 969, 0, $f,
+ 977, 978, 0, $f,
+ 982, 982, 0, $f,
+ 8226, 8226, 0, $f,
+ 8230, 8230, 0, $f,
+ 8242, 8243, 0, $f,
+ 8254, 8254, 0, $f,
+ 8260, 8260, 0, $f,
+ 8465, 8465, 0, $f,
+ 8472, 8472, 0, $f,
+ 8476, 8476, 0, $f,
+ 8482, 8482, 0, $f,
+ 8501, 8501, 0, $f,
+ 8592, 8596, 0, $f,
+ 8629, 8629, 0, $f,
+ 8656, 8660, 0, $f,
+ 8704, 8704, 0, $f,
+ 8706, 8707, 0, $f,
+ 8709, 8709, 0, $f,
+ 8711, 8713, 0, $f,
+ 8715, 8715, 0, $f,
+ 8719, 8719, 0, $f,
+ 8721, 8722, 0, $f,
+ 8727, 8727, 0, $f,
+ 8730, 8730, 0, $f,
+ 8733, 8734, 0, $f,
+ 8736, 8736, 0, $f,
+ 8743, 8747, 0, $f,
+ 8756, 8756, 0, $f,
+ 8764, 8764, 0, $f,
+ 8773, 8773, 0, $f,
+ 8776, 8776, 0, $f,
+ 8800, 8801, 0, $f,
+ 8804, 8805, 0, $f,
+ 8834, 8836, 0, $f,
+ 8838, 8839, 0, $f,
+ 8853, 8853, 0, $f,
+ 8855, 8855, 0, $f,
+ 8869, 8869, 0, $f,
+ 8901, 8901, 0, $f,
+ 8968, 8971, 0, $f,
+ 9001, 9002, 0, $f,
+ 9674, 9674, 0, $f,
+ 9824, 9824, 0, $f,
+ 9827, 9827, 0, $f,
+ 9829, 9830, 0, $f,
+ 338, 339, 0, $f,
+ 352, 353, 0, $f,
+ 376, 376, 0, $f,
+ 710, 710, 0, $f,
+ 732, 732, 0, $f,
+ 8194, 8195, 0, $f,
+ 8201, 8201, 0, $f,
+ 8204, 8207, 0, $f,
+ 8211, 8212, 0, $f,
+ 8216, 8218, 0, $f,
+ 8218, 8218, 0, $f,
+ 8220, 8222, 0, $f,
+ 8224, 8225, 0, $f,
+ 8240, 8240, 0, $f,
+ 8249, 8250, 0, $f,
+ 8364, 8364, 0, $f);
+ return $cmap;
+}
+
+
+// -------------------------------------------------------------
+ function textile_popup_help($name,$helpvar,$windowW,$windowH) {
+ return ' '.$name.'
';
+
+ return $out;
+ }
+
+ function txtgps($thing)
+ {
+ if (isset($_POST[$thing])){
+ if (get_magic_quotes_gpc()==1){
+ return stripslashes($_POST[$thing]);
+ } else {
+ return $_POST[$thing];
+ }
+ } else {
+ return '';
+ }
+ }
+
+// WordPress users. If you want to change what is textiled, do so here!
+// Default filters we don't want because of Textile 2
+remove_filter('the_content', 'wpautop');
+remove_filter('the_excerpt', 'wpautop');
+remove_filter('comment_text', 'wpautop');
+
+remove_filter('the_content', 'wptexturize');
+remove_filter('the_excerpt', 'wptexturize');
+remove_filter('comment_text', 'wptexturize');
+
+add_filter('the_content', 'textile', 6);
+add_filter('the_excerpt', 'textile', 6);
+add_filter('comment_text', 'textile', 6);
+
+?>
\ No newline at end of file