s around - # "paragraphs" that are wrapped in non-block-level tags, such as anchors, - # phrase emphasis, and spans. The list of tags we're looking for is - # hard-coded: - $block_tags_a = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'. - 'script|noscript|form|fieldset|iframe|math|ins|del'; - $block_tags_b = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'. - 'script|noscript|form|fieldset|iframe|math'; - - # First, look for nested blocks, e.g.: - #
tags.
-# $tags_to_skip = "!<(/?)(?:pre|code|kbd|script|math)[\s>]!";
-
- foreach ($tokens as $cur_token) {
- if ($cur_token[0] == 'tag') {
- # Within tags, encode * and _ so they don't conflict
- # with their use in Markdown for italics and strong.
- # We're replacing each such character with its
- # corresponding MD5 checksum value; this is likely
- # overkill, but it should prevent us from colliding
- # with the escape values by accident.
- $cur_token[1] = str_replace(array('*', '_'),
- array($md_escape_table['*'], $md_escape_table['_']),
- $cur_token[1]);
- $text .= $cur_token[1];
- } else {
- $t = $cur_token[1];
- $t = _EncodeBackslashEscapes($t);
- $text .= $t;
- }
- }
- return $text;
-}
-
-
-function _DoAnchors($text) {
-#
-# Turn Markdown link shortcuts into XHTML tags.
-#
- global $md_nested_brackets;
- #
- # First, handle reference-style links: [link text] [id]
- #
- $text = preg_replace_callback("{
- ( # wrap whole match in $1
- \\[
- ($md_nested_brackets) # link text = $2
- \\]
-
- [ ]? # one optional space
- (?:\\n[ ]*)? # one optional newline followed by spaces
-
- \\[
- (.*?) # id = $3
- \\]
- )
- }xs",
- '_DoAnchors_reference_callback', $text);
-
- #
- # Next, inline-style links: [link text](url "optional title")
- #
- $text = preg_replace_callback("{
- ( # wrap whole match in $1
- \\[
- ($md_nested_brackets) # link text = $2
- \\]
- \\( # literal paren
- [ \\t]*
- (.*?)>? # href = $3
- [ \\t]*
- ( # $4
- (['\"]) # quote char = $5
- (.*?) # Title = $6
- \\5 # matching quote
- )? # title is optional
- \\)
- )
- }xs",
- '_DoAnchors_inline_callback', $text);
-
- return $text;
-}
-function _DoAnchors_reference_callback($matches) {
- global $md_urls, $md_titles, $md_escape_table;
- $whole_match = $matches[1];
- $link_text = $matches[2];
- $link_id = strtolower($matches[3]);
-
- if ($link_id == "") {
- $link_id = strtolower($link_text); # for shortcut links like [this][].
- }
-
- if (isset($md_urls[$link_id])) {
- $url = $md_urls[$link_id];
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array($md_escape_table['*'], $md_escape_table['_']),
- $url);
- $result = " tags.
-#
- #
- # First, handle reference-style labeled images: ![alt text][id]
- #
- $text = preg_replace_callback('{
- ( # wrap whole match in $1
- !\[
- (.*?) # alt text = $2
- \]
-
- [ ]? # one optional space
- (?:\n[ ]*)? # one optional newline followed by spaces
-
- \[
- (.*?) # id = $3
- \]
-
- )
- }xs',
- '_DoImages_reference_callback', $text);
-
- #
- # Next, handle inline images: ![alt text](url "optional title")
- # Don't forget: encode * and _
-
- $text = preg_replace_callback("{
- ( # wrap whole match in $1
- !\\[
- (.*?) # alt text = $2
- \\]
- \\( # literal paren
- [ \\t]*
- (\S+?)>? # src url = $3
- [ \\t]*
- ( # $4
- (['\"]) # quote char = $5
- (.*?) # title = $6
- \\5 # matching quote
- [ \\t]*
- )? # title is optional
- \\)
- )
- }xs",
- '_DoImages_inline_callback', $text);
-
- return $text;
-}
-function _DoImages_reference_callback($matches) {
- global $md_urls, $md_titles, $md_empty_element_suffix, $md_escape_table;
- $whole_match = $matches[1];
- $alt_text = $matches[2];
- $link_id = strtolower($matches[3]);
-
- if ($link_id == "") {
- $link_id = strtolower($alt_text); # for shortcut links like ![this][].
- }
-
- $alt_text = str_replace('"', '"', $alt_text);
- if (isset($md_urls[$link_id])) {
- $url = $md_urls[$link_id];
- # We've got to encode these to avoid conflicting with italics/bold.
- $url = str_replace(array('*', '_'),
- array($md_escape_table['*'], $md_escape_table['_']),
- $url);
- $result = "'._RunSpanGamut(_UnslashQuotes('\\1')).'\n\n'",
- "''._RunSpanGamut(_UnslashQuotes('\\1')).'
\n\n'"),
- $text);
-
- # atx-style headers:
- # # Header 1
- # ## Header 2
- # ## Header 2 with closing hashes ##
- # ...
- # ###### Header 6
- #
- $text = preg_replace("{
- ^(\\#{1,6}) # $1 = string of #'s
- [ \\t]*
- (.+?) # $2 = Header text
- [ \\t]*
- \\#* # optional closing #'s (not counted)
- \\n+
- }xme",
- "''._RunSpanGamut(_UnslashQuotes('\\2')).' \n\n'",
- $text);
-
- return $text;
-}
-
-
-function _DoLists($text) {
-#
-# Form HTML ordered (numbered) and unordered (bulleted) lists.
-#
- global $md_tab_width, $md_list_level;
- $less_than_tab = $md_tab_width - 1;
-
- # Re-usable patterns to match list item bullets and number markers:
- $marker_ul = '[*+-]';
- $marker_ol = '\d+[.]';
- $marker_any = "(?:$marker_ul|$marker_ol)";
-
- # Re-usable pattern to match any entirel ul or ol list:
- $whole_list = '
- ( # $1 = whole list
- ( # $2
- [ ]{0,'.$less_than_tab.'}
- ('.$marker_any.') # $3 = first list item marker
- [ \t]+
- )
- (?s:.+?)
- ( # $4
- \z
- |
- \n{2,}
- (?=\S)
- (?! # Negative lookahead for another list item marker
- [ \t]*
- '.$marker_any.'[ \t]+
- )
- )
- )
- '; // mx
-
- # We use a different prefix before nested lists than top-level lists.
- # See extended comment in _ProcessListItems().
-
- if ($md_list_level) {
- $text = preg_replace_callback('{
- ^
- '.$whole_list.'
- }mx',
- '_DoLists_callback', $text);
- }
- else {
- $text = preg_replace_callback('{
- (?:(?<=\n\n)|\A\n?)
- '.$whole_list.'
- }mx',
- '_DoLists_callback', $text);
- }
-
- return $text;
-}
-function _DoLists_callback($matches) {
- # Re-usable patterns to match list item bullets and number markers:
- $marker_ul = '[*+-]';
- $marker_ol = '\d+[.]';
- $marker_any = "(?:$marker_ul|$marker_ol)";
-
- $list = $matches[1];
- $list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol";
- # Turn double returns into triple returns, so that we can make a
- # paragraph for the last item in a list, if necessary:
- $list = preg_replace("/\n{2,}/", "\n\n\n", $list);
- $result = _ProcessListItems($list, $marker_any);
- $result = "<$list_type>\n" . $result . "$list_type>\n";
- return $result;
-}
-
-
-function _ProcessListItems($list_str, $marker_any) {
-#
-# Process the contents of a single ordered or unordered list, splitting it
-# into individual list items.
-#
- global $md_list_level;
-
- # The $md_list_level global keeps track of when we're inside a list.
- # Each time we enter a list, we increment it; when we leave a list,
- # we decrement. If it's zero, we're not in a list anymore.
- #
- # We do this because when we're not inside a list, we want to treat
- # something like this:
- #
- # I recommend upgrading to version
- # 8. Oops, now this line is treated
- # as a sub-list.
- #
- # As a single paragraph, despite the fact that the second line starts
- # with a digit-period-space sequence.
- #
- # Whereas when we're inside a list (or sub-list), that line will be
- # treated as the start of a sub-list. What a kludge, huh? This is
- # an aspect of Markdown's syntax that's hard to parse perfectly
- # without resorting to mind-reading. Perhaps the solution is to
- # change the syntax rules such that sub-lists must start with a
- # starting cardinal number; e.g. "1." or "a.".
-
- $md_list_level++;
-
- # trim trailing blank lines:
- $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
-
- $list_str = preg_replace_callback('{
- (\n)? # leading line = $1
- (^[ \t]*) # leading whitespace = $2
- ('.$marker_any.') [ \t]+ # list marker = $3
- ((?s:.+?) # list item text = $4
- (\n{1,2}))
- (?= \n* (\z | \2 ('.$marker_any.') [ \t]+))
- }xm',
- '_ProcessListItems_callback', $list_str);
-
- $md_list_level--;
- return $list_str;
-}
-function _ProcessListItems_callback($matches) {
- $item = $matches[4];
- $leading_line =& $matches[1];
- $leading_space =& $matches[2];
-
- if ($leading_line || preg_match('/\n{2,}/', $item)) {
- $item = _RunBlockGamut(_Outdent($item));
- }
- else {
- # Recursion for sub-lists:
- $item = _DoLists(_Outdent($item));
- $item = rtrim($item, "\n");
- $item = _RunSpanGamut($item);
- }
-
- return "" . $item . " \n";
-}
-
-
-function _DoCodeBlocks($text) {
-#
-# Process Markdown `` blocks.
-#
- global $md_tab_width;
- $text = preg_replace_callback("{
- (?:\\n\\n|\\A)
- ( # $1 = the code block -- one or more lines, starting with a space/tab
- (?:
- (?:[ ]\{$md_tab_width} | \\t) # Lines must start with a tab or a tab-width of spaces
- .*\\n+
- )+
- )
- ((?=^[ ]{0,$md_tab_width}\\S)|\\Z) # Lookahead for non-space at line-start, or end of doc
- }xm",
- '_DoCodeBlocks_callback', $text);
-
- return $text;
-}
-function _DoCodeBlocks_callback($matches) {
- $codeblock = $matches[1];
-
- $codeblock = _EncodeCode(_Outdent($codeblock));
-// $codeblock = _Detab($codeblock);
- # trim leading newlines and trailing whitespace
- $codeblock = preg_replace(array('/\A\n+/', '/\s+\z/'), '', $codeblock);
-
- $result = "\n\n" . $codeblock . "\n
\n\n";
-
- return $result;
-}
-
-
-function _DoCodeSpans($text) {
-#
-# * Backtick quotes are used for
spans.
-#
-# * You can use multiple backticks as the delimiters if you want to
-# include literal backticks in the code span. So, this input:
-#
-# Just type ``foo `bar` baz`` at the prompt.
-#
-# Will translate to:
-#
-# Just type foo `bar` baz
at the prompt.
-#
-# There's no arbitrary limit to the number of backticks you
-# can use as delimters. If you need three consecutive backticks
-# in your code, use four for delimiters, etc.
-#
-# * You can use spaces to get literal backticks at the edges:
-#
-# ... type `` `bar` `` ...
-#
-# Turns to:
-#
-# ... type `bar`
...
-#
- $text = preg_replace_callback("@
- (`+) # $1 = Opening run of `
- (.+?) # $2 = The code block
- (?$c
";
-}
-
-
-function _EncodeCode($_) {
-#
-# Encode/escape certain characters inside Markdown code runs.
-# The point is that in code, these characters are literals,
-# and lose their special Markdown meanings.
-#
- global $md_escape_table;
-
- # Encode all ampersands; HTML entities are not
- # entities within a Markdown code span.
- $_ = str_replace('&', '&', $_);
-
- # Do the angle bracket song and dance:
- $_ = str_replace(array('<', '>'),
- array('<', '>'), $_);
-
- # Now, escape characters that are magic in Markdown:
- $_ = str_replace(array_keys($md_escape_table),
- array_values($md_escape_table), $_);
-
- return $_;
-}
-
-
-function _DoItalicsAndBold($text) {
- # must go first:
- $text = preg_replace('{ (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 }sx',
- '\2', $text);
- # Then :
- $text = preg_replace('{ (\*|_) (?=\S) (.+?) (?<=\S) \1 }sx',
- '\2', $text);
-
- return $text;
-}
-
-
-function _DoBlockQuotes($text) {
- $text = preg_replace_callback('/
- ( # Wrap whole match in $1
- (
- ^[ \t]*>[ \t]? # ">" at the start of a line
- .+\n # rest of the first line
- (.+\n)* # subsequent consecutive lines
- \n* # blanks
- )+
- )
- /xm',
- '_DoBlockQuotes_callback', $text);
-
- return $text;
-}
-function _DoBlockQuotes_callback($matches) {
- $bq = $matches[1];
- # trim one level of quoting - trim whitespace-only lines
- $bq = preg_replace(array('/^[ \t]*>[ \t]?/m', '/^[ \t]+$/m'), '', $bq);
- $bq = _RunBlockGamut($bq); # recurse
-
- $bq = preg_replace('/^/m', " ", $bq);
- # These leading spaces screw with content, so we need to fix that:
- $bq = preg_replace_callback('{(\s*.+?
)}sx',
- '_DoBlockQuotes_callback2', $bq);
-
- return "\n$bq\n
\n\n";
-}
-function _DoBlockQuotes_callback2($matches) {
- $pre = $matches[1];
- $pre = preg_replace('/^ /m', '', $pre);
- return $pre;
-}
-
-
-function _FormParagraphs($text) {
-#
-# Params:
-# $text - string to process with html tags
-#
- global $md_html_blocks;
-
- # Strip leading and trailing lines:
- $text = preg_replace(array('/\A\n+/', '/\n+\z/'), '', $text);
-
- $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
-
- #
- # Wrap
tags.
- #
- foreach ($grafs as $key => $value) {
- if (!isset( $md_html_blocks[$value] )) {
- $value = _RunSpanGamut($value);
- $value = preg_replace('/^([ \t]*)/', '
', $value);
- $value .= "
";
- $grafs[$key] = $value;
- }
- }
-
- #
- # Unhashify HTML blocks
- #
- foreach ($grafs as $key => $value) {
- if (isset( $md_html_blocks[$value] )) {
- $grafs[$key] = $md_html_blocks[$value];
- }
- }
-
- return implode("\n\n", $grafs);
-}
-
-
-function _EncodeAmpsAndAngles($text) {
-# Smart processing for ampersands and angle brackets that need to be encoded.
-
- # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:
- # http://bumppo.net/projects/amputator/
- $text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
- '&', $text);;
-
- # Encode naked <'s
- $text = preg_replace('{<(?![a-z/?\$!])}i', '<', $text);
-
- return $text;
-}
-
-
-function _EncodeBackslashEscapes($text) {
-#
-# Parameter: String.
-# Returns: The string, with after processing the following backslash
-# escape sequences.
-#
- global $md_escape_table, $md_backslash_escape_table;
- # Must process escaped backslashes first.
- return str_replace(array_keys($md_backslash_escape_table),
- array_values($md_backslash_escape_table), $text);
-}
-
-
-function _DoAutoLinks($text) {
- $text = preg_replace("!<((https?|ftp):[^'\">\\s]+)>!",
- '\1', $text);
-
- # Email addresses:
- $text = preg_replace('{
- <
- (?:mailto:)?
- (
- [-.\w]+
- \@
- [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+
- )
- >
- }exi',
- "_EncodeEmailAddress(_UnescapeSpecialChars(_UnslashQuotes('\\1')))",
- $text);
-
- return $text;
-}
-
-
-function _EncodeEmailAddress($addr) {
-#
-# Input: an email address, e.g. "foo@example.com"
-#
-# Output: the email address as a mailto link, with each character
-# of the address encoded as either a decimal or hex entity, in
-# the hopes of foiling most address harvesting spam bots. E.g.:
-#
-# foo
-# @example.com
-#
-# Based by a filter by Matthew Wickline, posted to the BBEdit-Talk
-# mailing list:
-#
- $addr = "mailto:" . $addr;
- $length = strlen($addr);
-
- # leave ':' alone (to spot mailto: later)
- $addr = preg_replace_callback('/([^\:])/',
- '_EncodeEmailAddress_callback', $addr);
-
- $addr = "$addr";
- # strip the mailto: from the visible part
- $addr = preg_replace('/">.+?:/', '">', $addr);
-
- return $addr;
-}
-function _EncodeEmailAddress_callback($matches) {
- $char = $matches[1];
- $r = rand(0, 100);
- # roughly 10% raw, 45% hex, 45% dec
- # '@' *must* be encoded. I insist.
- if ($r > 90 && $char != '@') return $char;
- if ($r < 45) return ''.dechex(ord($char)).';';
- return ''.ord($char).';';
-}
-
-
-function _UnescapeSpecialChars($text) {
-#
-# Swap back in all the special characters we've hidden.
-#
- global $md_escape_table;
- return str_replace(array_values($md_escape_table),
- array_keys($md_escape_table), $text);
-}
-
-
-# _TokenizeHTML is shared between PHP Markdown and PHP SmartyPants.
-# We only define it if it is not already defined.
-if (!function_exists('_TokenizeHTML')) :
-function _TokenizeHTML($str) {
-#
-# Parameter: String containing HTML markup.
-# Returns: An array of the tokens comprising the input
-# string. Each token is either a tag (possibly with nested,
-# tags contained therein, such as , or a
-# run of text between tags. Each element of the array is a
-# two-element array; the first is either 'tag' or 'text';
-# the second is the actual value.
-#
-#
-# Regular expression derived from the _tokenize() subroutine in
-# Brad Choate's MTRegex plugin.
-#
-#
- $index = 0;
- $tokens = array();
-
- $match = '(?s:)|'. # comment
- '(?s:<\?.*?\?>)|'. # processing instruction
- '(?:?[\w:$]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)'; # regular tags
-
- $parts = preg_split("{($match)}", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
-
- foreach ($parts as $part) {
- if (++$index % 2 && $part != '')
- array_push($tokens, array('text', $part));
- else
- array_push($tokens, array('tag', $part));
- }
-
- return $tokens;
-}
-endif;
-
-
-function _Outdent($text) {
-#
-# Remove one level of line-leading tabs or spaces
-#
- global $md_tab_width;
- return preg_replace("/^(\\t|[ ]{1,$md_tab_width})/m", "", $text);
-}
-
-
-function _Detab($text) {
-#
-# Replace tabs with the appropriate amount of space.
-#
- global $md_tab_width;
-
- # For each line we separate the line in blocks delemited by
- # tab characters. Then we reconstruct the line adding the appropriate
- # number of space charcters.
-
- $lines = explode("\n", $text);
- $text = "";
-
- foreach ($lines as $line) {
- # Split in blocks.
- $blocks = explode("\t", $line);
- # Add each blocks to the line.
- $line = $blocks[0];
- unset($blocks[0]); # Do not add first block twice.
- foreach ($blocks as $block) {
- # Calculate amount of space, insert spaces, insert block.
- $amount = $md_tab_width - strlen($line) % $md_tab_width;
- $line .= str_repeat(" ", $amount) . $block;
- }
- $text .= "$line\n";
- }
- return $text;
-}
-
-
-function _UnslashQuotes($text) {
-#
-# This function is useful to remove automaticaly slashed double quotes
-# when using preg_replace and evaluating an expression.
-# Parameter: String.
-# Returns: The string with any slash-double-quote (\") sequence replaced
-# by a single double quote.
-#
- return str_replace('\"', '"', $text);
-}
-
-
-/*
-
-PHP Markdown
-============
-
-Description
------------
-
-This is a PHP translation of the original Markdown formatter written in
-Perl by John Gruber.
-
-Markdown is a text-to-HTML filter; it translates an easy-to-read /
-easy-to-write structured text format into HTML. Markdown's text format
-is most similar to that of plain text email, and supports features such
-as headers, *emphasis*, code blocks, blockquotes, and links.
-
-Markdown's syntax is designed not as a generic markup language, but
-specifically to serve as a front-end to (X)HTML. You can use span-level
-HTML tags anywhere in a Markdown document, and you can use block level
-HTML tags (like and as well).
-
-For more information about Markdown's syntax, see:
-
-
-
-
-Bugs
-----
-
-To file bug reports please send email to:
-
-
-
-Please include with your report: (1) the example input; (2) the output you
-expected; (3) the output Markdown actually produced.
-
-
-Version History
----------------
-
-See the readme file for detailed release notes for this version.
-
-1.0.1 - 17 Dec 2004
-
-1.0 - 21 Aug 2004
-
-
-Author & Contributors
----------------------
-
-Original Perl version by John Gruber
-
-
-PHP port and other contributions by Michel Fortin
-
-
-
-Copyright and License
----------------------
-
-Copyright (c) 2004 Michel Fortin
-
-All rights reserved.
-
-Copyright (c) 2003-2004 John Gruber
-
-All rights reserved.
-
-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 "Markdown" 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.
-
-*/
-?>
\ No newline at end of file
diff --git a/wp-content/plugins/textile1.php b/wp-content/plugins/textile1.php
deleted file mode 100644
index d68cf979b0..0000000000
--- a/wp-content/plugins/textile1.php
+++ /dev/null
@@ -1,390 +0,0 @@
-Dean Allen's Humane Web Text Generator, also known as Textile. If you use this plugin you should disable Textile 2 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 1.0
-21 Feb, 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.
-
-*/
-
-
- function textile($text) {
- $text = stripslashes($text);
-
- $text = preg_replace("/&(?![#a-zA-Z0-9]+;)/","x%x%",$text);
-
- if (function_exists('mb_encode_numericentity')) {
- $text = encode_high($text);
- } else {
- $text = htmlentities($text,ENT_NOQUOTES,"utf-8");
- }
-
- $text = str_replace(array(">", "<", "&"), array(">", "<", "&"), $text);
-
- $text = str_replace("\r\n", "\n", $text);
-
- $text = str_replace("\t", "", $text);
-
- $text = preg_split("/\n/",$text);
- foreach($text as $line){
- $line = rtrim($line);
- $lineout[] = $line;
- }
-
- $text = implode("\n",$lineout);
-
- $text = preg_replace('/(^|\s)==(.*)==(\s|$)?/msU','$1$2 $3',$text);
-
- $text = preg_replace('/!([^\s\(=]+)\s?(?:\(([^\)]+)\))?!(\s)?/mU','$3',$text);
-
- $text = preg_replace('/( ):(\S+)(\s)/U','$1$3',$text);
-
- $text = preg_replace(
- '/
- ([\s[{(]|[[:punct:]])? # 1 optional space or brackets before
- " # starting "
- ([^"\(]+) # 2 text of link
- \s? # opt space
- (?:\(([^\(]*)\))? # 3 opt title attribute in parenths
- ": # dividing ":
- (\S+\b) # 4 suppose this is the url
- (\/)? # 5 opt trailing slash
- ([^[:alnum:]\/;]*) # 6 opt punctuation after the url
- (\s|$) # 7 either white space or end of string
- /x',
- '$1$2$6$7',$text);
-
- $qtags = array(
- '\*\*'=>'b',
- '\*'=>'strong',
- '\?\?'=>'cite',
- '-'=>'del',
- '\+'=>'ins',
- '~'=>'sub',
- '@'=>'code');
-
- foreach($qtags as $f=>$r){
- $text = preg_replace(
- '/(^|\s|>)'.$f.'\b(.+)\b([[:punct:]]*)'.$f.'([[:punct:]]{0,2})(\s|$)?/mU',
- '$1<'.$r.'>$2$3'.$r.'>$4$5',
- $text);
- }
-
- $text = preg_replace('/(^|\s)__(.*)__([[:punct:]]{0,2})(\s|$)?/mU','$1$2$3$4',$text);
- $text = preg_replace('/(^|\s)_(.*)_([[:punct:]]{0,2})(\s|$)?/mU','$1$2$3$4',$text);
-
- $text = preg_replace('/\^(.*)\^/mU','$1',$text);
-
- $text = preg_replace('/"$/',"\" ", $text);
- $glyph_search = array(
- '/([^\s[{(>])?\'(?(1)|(?=\s|s\b))/', # single closing
- '/\'/', # single opening
- '/([^\s[{(])?"(?(1)|(?=\s))/', # 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(!preg_match("/<.*>/",$text)){
- $text = preg_replace($glyph_search,$glyph_replace,$text);
- } else {
-
- $text = preg_split("/(<.*>)/U",$text,-1,PREG_SPLIT_DELIM_CAPTURE);
- foreach($text as $line){
-
- # matches are off if we're between , 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