From d67a6e531d20fbbd840c9b2ff2504851b14a1888 Mon Sep 17 00:00:00 2001 From: Matt Mullenweg Date: Mon, 6 Jun 2005 01:55:45 +0000 Subject: [PATCH] Far too few people use these for them to be included by default. To possibly be replaced by more useful plugins after a survey. git-svn-id: https://develop.svn.wordpress.org/trunk@2620 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-content/plugins/markdown.php | 1283 ------------------------------- wp-content/plugins/textile1.php | 390 ---------- 2 files changed, 1673 deletions(-) delete mode 100644 wp-content/plugins/markdown.php delete mode 100644 wp-content/plugins/textile1.php diff --git a/wp-content/plugins/markdown.php b/wp-content/plugins/markdown.php deleted file mode 100644 index 21c2e31e43..0000000000 --- a/wp-content/plugins/markdown.php +++ /dev/null @@ -1,1283 +0,0 @@ - -# -# Copyright (c) 2004 Michel Fortin - PHP Port -# -# - - -global $MarkdownPHPVersion, $MarkdownSyntaxVersion, - $md_empty_element_suffix, $md_tab_width, - $md_nested_brackets_depth, $md_nested_brackets, - $md_escape_table, $md_backslash_escape_table, - $md_list_level; - -$MarkdownPHPVersion = '1.0.1'; # Fri 17 Dec 2004 -$MarkdownSyntaxVersion = '1.0.1'; # Sun 12 Dec 2004 - - -# -# Global default settings: -# -$md_empty_element_suffix = " />"; # Change to ">" for HTML output -$md_tab_width = 4; - - -# -- WordPress Plugin Interface ----------------------------------------------- -/* -Plugin Name: Markdown -Plugin URI: http://www.michelf.com/projects/php-markdown/ -Description: Markdown syntax allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by John Gruber. More... -Version: 1.0.1 -Author: Michel Fortin -Author URI: http://www.michelf.com/ -*/ -if (isset($wp_version)) { - # Remove default WordPress auto-paragraph filter. - remove_filter('the_content', 'wpautop'); - remove_filter('the_excerpt', 'wpautop'); - remove_filter('comment_text', 'wpautop'); - # Add Markdown filter with priority 6 (same as Textile). - add_filter('the_content', 'Markdown', 6); - add_filter('the_excerpt', 'Markdown', 6); - add_filter('the_excerpt_rss', 'Markdown', 6); - add_filter('comment_text', 'Markdown', 6); -} - - -# -- bBlog Plugin Info -------------------------------------------------------- -function identify_modifier_markdown() { - global $MarkdownPHPVersion; - return array( - 'name' => 'markdown', - 'type' => 'modifier', - 'nicename' => 'Markdown', - 'description' => 'A text-to-HTML conversion tool for web writers', - 'authors' => 'Michel Fortin and John Gruber', - 'licence' => 'GPL', - 'version' => $MarkdownPHPVersion, - 'help' => 'Markdown syntax allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by John Gruber. More...' - ); -} - -# -- Smarty Modifier Interface ------------------------------------------------ -function smarty_modifier_markdown($text) { - return Markdown($text); -} - -# -- Textile Compatibility Mode ----------------------------------------------- -# Rename this file to "classTextile.php" and it can replace Textile anywhere. -if (strcasecmp(substr(__FILE__, -16), "classTextile.php") == 0) { - # Try to include PHP SmartyPants. Should be in the same directory. - @include_once 'smartypants.php'; - # Fake Textile class. It calls Markdown instead. - class Textile { - function TextileThis($text, $lite='', $encode='', $noimage='', $strict='') { - if ($lite == '' && $encode == '') $text = Markdown($text); - if (function_exists('SmartyPants')) $text = SmartyPants($text); - return $text; - } - } -} - - - -# -# Globals: -# - -# Regex to match balanced [brackets]. -# Needed to insert a maximum bracked depth while converting to PHP. -$md_nested_brackets_depth = 6; -$md_nested_brackets = - str_repeat('(?>[^\[\]]+|\[', $md_nested_brackets_depth). - str_repeat('\])*', $md_nested_brackets_depth); - -# Table of hash values for escaped characters: -$md_escape_table = array( - "\\" => md5("\\"), - "`" => md5("`"), - "*" => md5("*"), - "_" => md5("_"), - "{" => md5("{"), - "}" => md5("}"), - "[" => md5("["), - "]" => md5("]"), - "(" => md5("("), - ")" => md5(")"), - ">" => md5(">"), - "#" => md5("#"), - "+" => md5("+"), - "-" => md5("-"), - "." => md5("."), - "!" => md5("!") -); -# Create an identical table but for escaped characters. -$md_backslash_escape_table; -foreach ($md_escape_table as $key => $char) - $md_backslash_escape_table["\\$key"] = $char; - - -function Markdown($text) { -# -# Main function. The order in which other subs are called here is -# essential. Link and image substitutions need to happen before -# _EscapeSpecialChars(), so that any *'s or _'s in the -# and tags get encoded. -# - # Clear the global hashes. If we don't clear these, you get conflicts - # from other articles when generating a page which contains more than - # one article (e.g. an index page that shows the N most recent - # articles): - global $md_urls, $md_titles, $md_html_blocks; - $md_urls = array(); - $md_titles = array(); - $md_html_blocks = array(); - - # Standardize line endings: - # DOS to Unix and Mac to Unix - $text = str_replace(array("\r\n", "\r"), "\n", $text); - - # Make sure $text ends with a couple of newlines: - $text .= "\n\n"; - - # Convert all tabs to spaces. - $text = _Detab($text); - - # Strip any lines consisting only of spaces and tabs. - # This makes subsequent regexen easier to write, because we can - # match consecutive blank lines with /\n+/ instead of something - # contorted like /[ \t]*\n+/ . - $text = preg_replace('/^[ \t]+$/m', '', $text); - - # Turn block-level HTML blocks into hash entries - $text = _HashHTMLBlocks($text); - - # Strip link definitions, store in hashes. - $text = _StripLinkDefinitions($text); - - $text = _RunBlockGamut($text); - - $text = _UnescapeSpecialChars($text); - - return $text . "\n"; -} - - -function _StripLinkDefinitions($text) { -# -# Strips link definitions from text, stores the URLs and titles in -# hash references. -# - global $md_tab_width; - $less_than_tab = $md_tab_width - 1; - - # Link defs are in the form: ^[id]: url "optional title" - $text = preg_replace_callback('{ - ^[ ]{0,'.$less_than_tab.'}\[(.+)\]: # id = $1 - [ \t]* - \n? # maybe *one* newline - [ \t]* - ? # url = $2 - [ \t]* - \n? # maybe one newline - [ \t]* - (?: - (?<=\s) # lookbehind for whitespace - ["(] - (.+?) # title = $3 - [")] - [ \t]* - )? # title is optional - (?:\n+|\Z) - }xm', - '_StripLinkDefinitions_callback', - $text); - return $text; -} -function _StripLinkDefinitions_callback($matches) { - global $md_urls, $md_titles; - $link_id = strtolower($matches[1]); - $md_urls[$link_id] = _EncodeAmpsAndAngles($matches[2]); - if (isset($matches[3])) - $md_titles[$link_id] = str_replace('"', '"', $matches[3]); - return ''; # String that will replace the block -} - - -function _HashHTMLBlocks($text) { - global $md_tab_width; - $less_than_tab = $md_tab_width - 1; - - # Hashify HTML blocks: - # We only want to do this for block-level HTML tags, such as headers, - # lists, and tables. That's because we still want to wrap

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 for inner block must be indented. - #
- #
- # - # The outermost tags must start at the left margin for this to match, and - # the inner nested divs must be indented. - # We need to do this before the next, more liberal match, because the next - # match will start at the first `
` and stop at the first `
`. - $text = preg_replace_callback("{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_a) # start tag = $2 - \\b # word break - (.*\\n)*? # any number of lines, minimally matching - # the matching end tag - [ \\t]* # trailing spaces/tabs - (?=\\n+|\\Z) # followed by a newline or end of document - ) - }xm", - '_HashHTMLBlocks_callback', - $text); - - # - # Now match more liberally, simply from `\n` to `\n` - # - $text = preg_replace_callback("{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_b) # start tag = $2 - \\b # word break - (.*\\n)*? # any number of lines, minimally matching - .* # the matching end tag - [ \\t]* # trailing spaces/tabs - (?=\\n+|\\Z) # followed by a newline or end of document - ) - }xm", - '_HashHTMLBlocks_callback', - $text); - - # Special case just for
. It was easier to make a special case than - # to make the other regex more complicated. - $text = preg_replace_callback('{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,'.$less_than_tab.'} - <(hr) # start tag = $2 - \b # word break - ([^<>])*? # - /?> # the matching end tag - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }x', - '_HashHTMLBlocks_callback', - $text); - - # Special case for standalone HTML comments: - $text = preg_replace_callback('{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,'.$less_than_tab.'} - (?s: - - ) - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }x', - '_HashHTMLBlocks_callback', - $text); - - return $text; -} -function _HashHTMLBlocks_callback($matches) { - global $md_html_blocks; - $text = $matches[1]; - $key = md5($text); - $md_html_blocks[$key] = $text; - return "\n\n$key\n\n"; # String that will replace the block -} - - -function _RunBlockGamut($text) { -# -# These are all the transformations that form block-level -# tags like paragraphs, headers, and list items. -# - global $md_empty_element_suffix; - - $text = _DoHeaders($text); - - # Do Horizontal Rules: - $text = preg_replace( - array('{^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$}mx', - '{^[ ]{0,2}([ ]? -[ ]?){3,}[ \t]*$}mx', - '{^[ ]{0,2}([ ]? _[ ]?){3,}[ \t]*$}mx'), - "\n tags around block-level tags. - $text = _HashHTMLBlocks($text); - - $text = _FormParagraphs($text); - - return $text; -} - - -function _RunSpanGamut($text) { -# -# These are all the transformations that occur *within* block-level -# tags like paragraphs, headers, and list items. -# - global $md_empty_element_suffix; - - $text = _DoCodeSpans($text); - - $text = _EscapeSpecialChars($text); - - # Process anchor and image tags. Images must come first, - # because ![foo][f] looks like an anchor. - $text = _DoImages($text); - $text = _DoAnchors($text); - - # Make links out of things like `` - # Must come after _DoAnchors(), because you can use < and > - # delimiters in inline links like [this](). - $text = _DoAutoLinks($text); - - # Fix unencoded ampersands and <'s: - $text = _EncodeAmpsAndAngles($text); - - $text = _DoItalicsAndBold($text); - - # Do hard breaks: - $text = preg_replace('/ {2,}\n/', " or 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]* - ? # 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 = "\"$alt_text\"";'._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 . "\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 '&#x'.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 - '(?:[^"\'>]+|"[^"]*"|\'[^\']*\')*>)'; # 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','$2$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$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
      1. /',$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