Base for Object-Oriented PHP Markdown Extra
This commit is contained in:
parent
bdcd08b467
commit
acc2f3c3ec
3 changed files with 1313 additions and 504 deletions
325
PHP Markdown Extra Readme.text
Normal file
325
PHP Markdown Extra Readme.text
Normal file
|
|
@ -0,0 +1,325 @@
|
|||
PHP Markdown Extra
|
||||
==================
|
||||
|
||||
Version 1.0.1oo - Fri 19 May 2006
|
||||
|
||||
by Michel Fortin
|
||||
<http://www.michelf.com/>
|
||||
|
||||
based on Markdown by John Gruber
|
||||
<http://daringfireball.net/>
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
This is a special version of PHP Markdown with extra features. See
|
||||
<http://www.michelf.com/projects/php-markdown/extra/> for details.
|
||||
|
||||
Markdown is a text-to-HTML conversion tool for web writers. Markdown
|
||||
allows you to write using an easy-to-read, easy-to-write plain text
|
||||
format, then convert it to structurally valid XHTML (or HTML).
|
||||
|
||||
"Markdown" is two things: a plain text markup syntax, and a software
|
||||
tool, written in Perl, that converts the plain text markup to HTML.
|
||||
PHP Markdown is a port to PHP of the original Markdown program by
|
||||
John Gruber.
|
||||
|
||||
PHP Markdown can work as a plug-in for WordPress and bBlog, as a
|
||||
modifier for the Smarty templating engine, or as a remplacement for
|
||||
textile formatting in any software that support textile.
|
||||
|
||||
Full documentation of Markdown's syntax is available on John's
|
||||
Markdown page: <http://daringfireball.net/projects/markdown/>
|
||||
|
||||
|
||||
Installation and Requirement
|
||||
----------------------------
|
||||
|
||||
PHP Markdown requires PHP version 4.0.5 or later.
|
||||
|
||||
|
||||
### WordPress ###
|
||||
|
||||
PHP Markdown works with [WordPress][wp], version 1.2 or later.
|
||||
PHP Markdown is already bundled with WordPress. Still, you can find
|
||||
here the latest version that may be newer than the latest WordPress
|
||||
version.
|
||||
|
||||
[wp]: http://wordpress.org/
|
||||
|
||||
1. To use PHP Markdown with WordPress, place the "makrdown.php" file
|
||||
in the "plugins" folder. This folder is located inside
|
||||
"wp-content" at the root of your site:
|
||||
|
||||
(site home)/wp-content/plugins/
|
||||
|
||||
2. Activate the plugin with the administrative interface of
|
||||
WordPress. In the "Plugins" section you will now find Markdown.
|
||||
To activate the plugin, click on the "Activate" button on the
|
||||
same line than Markdown. Your entries will now be formatted by
|
||||
PHP Markdown.
|
||||
|
||||
You can configure PHP Markdown to not apply to the comments on your
|
||||
WordPress weblog. See the "Configuration" section below.
|
||||
|
||||
Note: It is not possible at this time to apply a different set of
|
||||
filters to different entries. All your entries will be formated by
|
||||
PHP Markdown. This is currently a limitation of WordPress. If your old
|
||||
entries are written in HTML (as opposed to another formatting syntax),
|
||||
your site should not suffer much from installing PHP Markdown.
|
||||
|
||||
|
||||
### bBlog ###
|
||||
|
||||
PHP Markdown also works with the latest version of [bBlog][bb].
|
||||
|
||||
[bb]: http://www.bblog.com/
|
||||
|
||||
1. To use PHP Markdown with bBlog, rename "markdown.php" to
|
||||
"modifier.markdown.php" and place the file in the "bBlog_plugins"
|
||||
folder. This folder is located inside the "bblog" directory of
|
||||
your site, like this:
|
||||
|
||||
(site home)/bblog/bBlog_plugins/modifier.markdown.php
|
||||
|
||||
2. Select "Markdown" as the "Entry Modifier" when you post a new
|
||||
entry. This setting will only apply to the entry you are editing.
|
||||
|
||||
|
||||
### Replacing Textile ###
|
||||
|
||||
Many web programs written in PHP use [Textile][tx] to format your text.
|
||||
To use PHP Markdown with these programs without having to change the
|
||||
code, you can use PHP Markdown in "Textile Compatibility Mode."
|
||||
|
||||
[tx]: http://www.textism.com/tools/textile/
|
||||
|
||||
1. Rename the "markdown.php" file to "classTextile.php".
|
||||
|
||||
2. Locate the "classTextile.php" file hidden somewhere inside the
|
||||
installation of your program (see table below). Replace it with
|
||||
the PHP Markdown file you just renamed.
|
||||
|
||||
As an helper, here you can learn where is the "classTextile.php" file
|
||||
in some web programs:
|
||||
|
||||
Program Location
|
||||
----------------------------------------------------------------
|
||||
TextPattern (site home)/textpattern/lib/classTextile.php
|
||||
Pivot (site home)/pivot/includes/textile/classtextile.php
|
||||
|
||||
Contrary to Textile, Markdown does not convert quotes to curly ones
|
||||
and does not convert multiple hyphens (`--` and `---`) into en- and
|
||||
em-dashes. If you use PHP Markdown in Textile Compatibility Mode, you
|
||||
can solve this problem by installing the "smartypants.php" file from
|
||||
[PHP SmartyPants][psp] beside the "classTextile.php" file. The Textile
|
||||
Compatibility Mode function will use SmartyPants automatically without
|
||||
further modification.
|
||||
|
||||
[psp]: http://www.michelf.com/projects/php-smartypants/
|
||||
|
||||
|
||||
### In Your Own Programs ###
|
||||
|
||||
You can use PHP Markdown easily in your current PHP program. Simply
|
||||
include the file and then call the Markdown function on the text you
|
||||
want to convert:
|
||||
|
||||
include_once "markdown.php";
|
||||
$my_html = Markdown($my_text);
|
||||
|
||||
If you wish to use PHP Markdown with another text filter function
|
||||
built to parse HTML, you should filter the text *after* the Markdown
|
||||
function call. This is an example with [PHP SmartyPants][psp]:
|
||||
|
||||
$my_html = SmartyPants(Markdown($my_text));
|
||||
|
||||
|
||||
### With Smarty ###
|
||||
|
||||
If your program use the [Smarty][sm] template engine, PHP Markdown
|
||||
can now be used as a modifier for your templates. Rename "markdown.php"
|
||||
to "modifier.markdown.php" and put it in your smarty plugins folder.
|
||||
|
||||
[sm]: http://smarty.php.net/
|
||||
|
||||
If you are using MovableType 3.1 or later, the Smarty plugin folder is
|
||||
located at `(MT CGI root)/php/extlib/smarty/plugins`. This will allow
|
||||
Markdown to work on dynamic pages.
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
By default, PHP Markdown produces XHTML output for tags with empty
|
||||
elements. E.g.:
|
||||
|
||||
<br />
|
||||
|
||||
Markdown can be configured to produce HTML-style tags; e.g.:
|
||||
|
||||
<br>
|
||||
|
||||
To do this, you must edit the "$md_empty_element_suffix" variable
|
||||
below the "Global default settings" header at the start of the
|
||||
"markdown.php" file.
|
||||
|
||||
|
||||
### WordPress-Specific Settings ###
|
||||
|
||||
By default, the Markdown plugin applies to both posts and comments on
|
||||
your WordPress weblog. To deactivate one or the other, edit the
|
||||
`$md_wp_posts` or `$md_wp_comments` variable under the "WordPress
|
||||
settings" header at the start of the "markdown.php" file.
|
||||
|
||||
|
||||
Bugs
|
||||
----
|
||||
|
||||
To file bug reports please send email to:
|
||||
<michel.fortin@michelf.com>
|
||||
|
||||
Please include with your report: (1) the example input; (2) the output you
|
||||
expected; (3) the output PHP Markdown actually produced.
|
||||
|
||||
|
||||
Version History
|
||||
---------------
|
||||
|
||||
1.0.1oo (19 May 2006)
|
||||
|
||||
* Converted PHP Markdown and PHP Markdown Extra to a object-oriented design.
|
||||
|
||||
|
||||
1.0.1 (9 December 2005)
|
||||
|
||||
* Fixed a problem occurring with PHP 5.1.1 due to a small
|
||||
change to strings variable replacement behaviour in
|
||||
this version.
|
||||
|
||||
|
||||
1.0 (5 September 2005)
|
||||
|
||||
* Added support for setting the id attributes for headers like this:
|
||||
|
||||
Header 1 {#header1}
|
||||
========
|
||||
|
||||
## Header 2 ## {#header2}
|
||||
|
||||
This only work only for headers for now.
|
||||
|
||||
* Tables will now work correctly as the first element of a definition
|
||||
list. For example, this input:
|
||||
|
||||
Term
|
||||
|
||||
: Header | Header
|
||||
------- | -------
|
||||
Cell | Cell
|
||||
|
||||
used to produce no definition list and a table where the first
|
||||
header was named ": Header". This is now fixed.
|
||||
|
||||
* Fix for a problem where a paragraph following a table was not
|
||||
placed between `<p>` tags.
|
||||
|
||||
|
||||
1.0b4 (1 August 2005)
|
||||
|
||||
* Fixed some issues where whitespace around HTML blocks were trigging
|
||||
empty paragraph tags.
|
||||
|
||||
* Fixed an HTML block parsing issue that would cause a block element
|
||||
following a code span or block with unmatched opening bracket to be
|
||||
placed inside a paragraph.
|
||||
|
||||
* Removed some PHP notices that could appear when parsing definition
|
||||
lists and tables with PHP notice reporting flag set.
|
||||
|
||||
|
||||
1.0b3 (29 July 2005)
|
||||
|
||||
* Definition lists now require a blank line before each term. Solves
|
||||
an ambiguity where the last line of lazy-indented definitions could
|
||||
be mistaken by PHP Markdown as a new term in the list.
|
||||
|
||||
* Definition lists now support multiple terms per definition.
|
||||
|
||||
* Some special tags were replaced in the output by their md5 hash
|
||||
key. Things such as this now work as expected:
|
||||
|
||||
## Header <?php echo $number ?> ##
|
||||
|
||||
|
||||
1.0b2 (26 July 2005)
|
||||
|
||||
* Definition lists can now take two or more definitions for one term.
|
||||
This should have been the case before, but a bug prevented this
|
||||
from working right.
|
||||
|
||||
* Fixed a problem where single column table with a pipe only at the
|
||||
end where not parsed as table. Here is such a table:
|
||||
|
||||
| header
|
||||
| ------
|
||||
| cell
|
||||
|
||||
* Fixed problems with empty cells in the first column of a table with
|
||||
no leading pipe, like this one:
|
||||
|
||||
header | header
|
||||
------ | ------
|
||||
| cell
|
||||
|
||||
* Code spans containing pipes did not within a table. This is now
|
||||
fixed by parsing code spans before splitting rows into cells.
|
||||
|
||||
* Added the pipe character to the backlash escape character lists.
|
||||
|
||||
|
||||
1.0b1 (25 Jun 2005)
|
||||
|
||||
* First public release of PHP Markdown Extra.
|
||||
|
||||
|
||||
Copyright and License
|
||||
---------------------
|
||||
|
||||
Copyright (c) 2004-2006 Michel Fortin
|
||||
<http://www.michelf.com/>
|
||||
All rights reserved.
|
||||
|
||||
Based on Markdown
|
||||
Copyright (c) 2003-2005 John Gruber
|
||||
<http://daringfireball.net/>
|
||||
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.
|
||||
|
|
@ -1,478 +0,0 @@
|
|||
PHP Markdown
|
||||
============
|
||||
|
||||
Version 1.0.1oo - Fri 19 May 2006
|
||||
|
||||
by Michel Fortin
|
||||
<http://www.michelf.com/>
|
||||
|
||||
based on work by John Gruber
|
||||
<http://daringfireball.net/>
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Markdown is a text-to-HTML conversion tool for web writers. Markdown
|
||||
allows you to write using an easy-to-read, easy-to-write plain text
|
||||
format, then convert it to structurally valid XHTML (or HTML).
|
||||
|
||||
"Markdown" is two things: a plain text markup syntax, and a software
|
||||
tool, written in Perl, that converts the plain text markup to HTML.
|
||||
PHP Markdown is a port to PHP of the original Markdown program by
|
||||
John Gruber.
|
||||
|
||||
PHP Markdown can work as a plug-in for WordPress and bBlog, as a
|
||||
modifier for the Smarty templating engine, or as a remplacement for
|
||||
textile formatting in any software that support textile.
|
||||
|
||||
Full documentation of Markdown's syntax is available on John's
|
||||
Markdown page: <http://daringfireball.net/projects/markdown/>
|
||||
|
||||
|
||||
Installation and Requirement
|
||||
----------------------------
|
||||
|
||||
PHP Markdown requires PHP version 4.0.5 or later.
|
||||
|
||||
|
||||
### WordPress ###
|
||||
|
||||
PHP Markdown works with [WordPress][wp], version 1.2 or later.
|
||||
PHP Markdown is already bundled with WordPress. Still, you can find
|
||||
here the latest version that may be newer than the latest WordPress
|
||||
version.
|
||||
|
||||
[wp]: http://wordpress.org/
|
||||
|
||||
1. To use PHP Markdown with WordPress, place the "makrdown.php" file
|
||||
in the "plugins" folder. This folder is located inside
|
||||
"wp-content" at the root of your site:
|
||||
|
||||
(site home)/wp-content/plugins/
|
||||
|
||||
2. Activate the plugin with the administrative interface of
|
||||
WordPress. In the "Plugins" section you will now find Markdown.
|
||||
To activate the plugin, click on the "Activate" button on the
|
||||
same line than Markdown. Your entries will now be formatted by
|
||||
PHP Markdown.
|
||||
|
||||
You can configure PHP Markdown to not apply to the comments on your
|
||||
WordPress weblog. See the "Configuration" section below.
|
||||
|
||||
Note: It is not possible at this time to apply a different set of
|
||||
filters to different entries. All your entries will be formated by
|
||||
PHP Markdown. This is currently a limitation of WordPress. If your old
|
||||
entries are written in HTML (as opposed to another formatting syntax),
|
||||
your site should not suffer much from installing PHP Markdown.
|
||||
|
||||
|
||||
### bBlog ###
|
||||
|
||||
PHP Markdown also works with the latest version of [bBlog][bb].
|
||||
|
||||
[bb]: http://www.bblog.com/
|
||||
|
||||
1. To use PHP Markdown with bBlog, rename "markdown.php" to
|
||||
"modifier.markdown.php" and place the file in the "bBlog_plugins"
|
||||
folder. This folder is located inside the "bblog" directory of
|
||||
your site, like this:
|
||||
|
||||
(site home)/bblog/bBlog_plugins/modifier.markdown.php
|
||||
|
||||
2. Select "Markdown" as the "Entry Modifier" when you post a new
|
||||
entry. This setting will only apply to the entry you are editing.
|
||||
|
||||
|
||||
### Replacing Textile ###
|
||||
|
||||
Many web programs written in PHP use [Textile][tx] to format your text.
|
||||
To use PHP Markdown with these programs without having to change the
|
||||
code, you can use PHP Markdown in "Textile Compatibility Mode."
|
||||
|
||||
[tx]: http://www.textism.com/tools/textile/
|
||||
|
||||
1. Rename the "markdown.php" file to "classTextile.php".
|
||||
|
||||
2. Locate the "classTextile.php" file hidden somewhere inside the
|
||||
installation of your program (see table below). Replace it with
|
||||
the PHP Markdown file you just renamed.
|
||||
|
||||
As an helper, here you can learn where is the "classTextile.php" file
|
||||
in some web programs:
|
||||
|
||||
Program Location
|
||||
----------------------------------------------------------------
|
||||
TextPattern (site home)/textpattern/lib/classTextile.php
|
||||
Pivot (site home)/pivot/includes/textile/classtextile.php
|
||||
|
||||
Contrary to Textile, Markdown does not convert quotes to curly ones
|
||||
and does not convert multiple hyphens (`--` and `---`) into en- and
|
||||
em-dashes. If you use PHP Markdown in Textile Compatibility Mode, you
|
||||
can solve this problem by installing the "smartypants.php" file from
|
||||
[PHP SmartyPants][psp] beside the "classTextile.php" file. The Textile
|
||||
Compatibility Mode function will use SmartyPants automatically without
|
||||
further modification.
|
||||
|
||||
[psp]: http://www.michelf.com/projects/php-smartypants/
|
||||
|
||||
|
||||
### In Your Own Programs ###
|
||||
|
||||
You can use PHP Markdown easily in your current PHP program. Simply
|
||||
include the file and then call the Markdown function on the text you
|
||||
want to convert:
|
||||
|
||||
include_once "markdown.php";
|
||||
$my_html = Markdown($my_text);
|
||||
|
||||
If you wish to use PHP Markdown with another text filter function
|
||||
built to parse HTML, you should filter the text *after* the Markdown
|
||||
function call. This is an example with [PHP SmartyPants][psp]:
|
||||
|
||||
$my_html = SmartyPants(Markdown($my_text));
|
||||
|
||||
|
||||
### With Smarty ###
|
||||
|
||||
If your program use the [Smarty][sm] template engine, PHP Markdown
|
||||
can now be used as a modifier for your templates. Rename "markdown.php"
|
||||
to "modifier.markdown.php" and put it in your smarty plugins folder.
|
||||
|
||||
[sm]: http://smarty.php.net/
|
||||
|
||||
If you are using MovableType 3.1 or later, the Smarty plugin folder is
|
||||
located at `(MT CGI root)/php/extlib/smarty/plugins`. This will allow
|
||||
Markdown to work on dynamic pages.
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
By default, PHP Markdown produces XHTML output for tags with empty
|
||||
elements. E.g.:
|
||||
|
||||
<br />
|
||||
|
||||
Markdown can be configured to produce HTML-style tags; e.g.:
|
||||
|
||||
<br>
|
||||
|
||||
To do this, you must edit the "$md_empty_element_suffix" variable
|
||||
below the "Global default settings" header at the start of the
|
||||
"markdown.php" file.
|
||||
|
||||
|
||||
### WordPress-Specific Settings ###
|
||||
|
||||
By default, the Markdown plugin applies to both posts and comments on
|
||||
your WordPress weblog. To deactivate one or the other, edit the
|
||||
`$md_wp_posts` or `$md_wp_comments` variable under the "WordPress
|
||||
settings" header at the start of the "markdown.php" file.
|
||||
|
||||
|
||||
Bugs
|
||||
----
|
||||
|
||||
To file bug reports please send email to:
|
||||
<michel.fortin@michelf.com>
|
||||
|
||||
Please include with your report: (1) the example input; (2) the output you
|
||||
expected; (3) the output PHP Markdown actually produced.
|
||||
|
||||
|
||||
Version History
|
||||
---------------
|
||||
|
||||
1.0.1oo (19 May 2006)
|
||||
|
||||
* Converted PHP Markdown to a object-oriented design.
|
||||
|
||||
|
||||
1.0.1c (9 Dec 2005)
|
||||
|
||||
* Fixed a problem occurring with PHP 5.1.1 due to a small
|
||||
change to strings variable replacement behaviour in
|
||||
this version.
|
||||
|
||||
|
||||
1.0.1b (6 Jun 2005)
|
||||
|
||||
* Fixed a bug where an inline image followed by a reference link would
|
||||
give a completely wrong result.
|
||||
|
||||
* Fix for escaped backticks still triggering code spans:
|
||||
|
||||
There are two raw backticks here: \` and here: \`, not a code span
|
||||
|
||||
* Fix for an ordered list following an unordered list, and the
|
||||
reverse. There is now a loop in _DoList that does the two
|
||||
separately.
|
||||
|
||||
* Fix for nested sub-lists in list-paragraph mode. Previously we got
|
||||
a spurious extra level of `<p>` tags for something like this:
|
||||
|
||||
* this
|
||||
|
||||
* sub
|
||||
|
||||
that
|
||||
|
||||
* Fixed some incorrect behaviour with emphasis. This will now work
|
||||
as it should:
|
||||
|
||||
*test **thing***
|
||||
**test *thing***
|
||||
***thing* test**
|
||||
***thing** test*
|
||||
|
||||
Name: __________
|
||||
Address: _______
|
||||
|
||||
* Correct a small bug in `_TokenizeHTML` where a Doctype declaration
|
||||
was not seen as HTML.
|
||||
|
||||
* Major rewrite of the WordPress integration code that should
|
||||
correct many problems by preventing default WordPress filters from
|
||||
tampering with Markdown-formatted text. More details here:
|
||||
<http://www.michelf.com/weblog/2005/wordpress-text-flow-vs-markdown/>
|
||||
|
||||
* Added a configuration variable for WordPress that can disable the
|
||||
Markdown filter on comments.
|
||||
|
||||
|
||||
1.0.1a (15 Apr 2005)
|
||||
|
||||
* Fixed an issue where PHP warnings were trigged when converting
|
||||
text with list items running on PHP 4.0.6. This was comming from
|
||||
the `rtrim` function which did not support the second argument
|
||||
prior version 4.1. Replaced by a regular expression.
|
||||
|
||||
* Markdown now filter correctly post excerpts and comment
|
||||
excerpts in WordPress.
|
||||
|
||||
* Automatic links and some code sample were "corrected" by
|
||||
the balenceTag filter in WordPress meant to ensure HTML
|
||||
is well formed. This new version of PHP Markdown postpone this
|
||||
filter so that it runs after Markdown.
|
||||
|
||||
* Blockquote syntax and some code sample were stripped by
|
||||
a new WordPress 1.5 filter meant to remove unwanted HTML
|
||||
in comments. This new version of PHP Markdown postpone this
|
||||
filter so that it runs after Markdown.
|
||||
|
||||
|
||||
1.0.2b1 (5 Mar 2005)
|
||||
|
||||
* Fix for backticks within HTML tag:
|
||||
|
||||
<span attr='`ticks`'>like this</span>
|
||||
|
||||
* Fix for escaped backticks still triggering code spans:
|
||||
|
||||
There are two raw backticks here: \` and here: \`, not a code span
|
||||
|
||||
* Improved integration with WordPress. With WordPress 1.5, the
|
||||
balenceTags filter now runs after Markdown, so it won't
|
||||
interfere anymore. You can still disable balanceTags from the admin
|
||||
interface (in Options > Writing) if you want to.
|
||||
|
||||
* PHP Markdown now correctly filter text for excerpts in WordPress.
|
||||
There is still one glitch: autolinks and tags in code samples are
|
||||
stripped by WordPress when trimming it. A fix for this is possible
|
||||
with WordPress 1.5, but would require duplicating WordPress entry
|
||||
trimming code within Markdown, which I can't do because of a license
|
||||
issue. (Nor do I think it is a good solution to fix this.)
|
||||
|
||||
* Improved Textile compatibility mode. Markdown will now honor the
|
||||
no-image and the lite parameters. In lite mode, no header, blockquote,
|
||||
list, or code block will be made, and inline HTML is limited
|
||||
to the following tags:
|
||||
|
||||
<a><i><b><em><strong><sup><sub><code><img><cite><ins><del>
|
||||
|
||||
This is acheived by backslash-escaping block markers before sending
|
||||
text through the Markdown filter.
|
||||
|
||||
The improved Textile comatibility means that the Markdown syntax will now
|
||||
be processed for comments in TextPattern (only for span elements due to
|
||||
TextPattern using the lite mode for comments). Sadly, due to TextPattern
|
||||
tag stripping, sample code in code span and auto-links will be stripped
|
||||
before the Markdown filter can see them. So I guess I should say it
|
||||
half-work for comments TextPattern.
|
||||
|
||||
|
||||
1.0.1 (16 Dec 2004):
|
||||
|
||||
* Changed the syntax rules for code blocks and spans. Previously,
|
||||
backslash escapes for special Markdown characters were processed
|
||||
everywhere other than within inline HTML tags. Now, the contents of
|
||||
code blocks and spans are no longer processed for backslash escapes.
|
||||
This means that code blocks and spans are now treated literally,
|
||||
with no special rules to worry about regarding backslashes.
|
||||
|
||||
**IMPORTANT**: This breaks the syntax from all previous versions of
|
||||
Markdown. Code blocks and spans involving backslash characters will
|
||||
now generate different output than before.
|
||||
|
||||
Implementation-wise, this change was made by moving the call to
|
||||
`_EscapeSpecialChars()` from the top-level `Markdown()` function to
|
||||
within `_RunSpanGamut()`.
|
||||
|
||||
* Significants performance improvement in `_DoHeader`, `_Detab`
|
||||
and `_TokenizeHTML`.
|
||||
|
||||
* Added `>`, `+`, and `-` to the list of backslash-escapable
|
||||
characters. These should have been done when these characters
|
||||
were added as unordered list item markers.
|
||||
|
||||
* Inline links using `<` and `>` URL delimiters weren't working:
|
||||
|
||||
like [this](<http://example.com/>)
|
||||
|
||||
Fixed by moving `_DoAutoLinks()` after `_DoAnchors()` in
|
||||
`_RunSpanGamut()`.
|
||||
|
||||
* Fixed bug where auto-links were being processed within code spans:
|
||||
|
||||
like this: `<http://example.com/>`
|
||||
|
||||
Fixed by moving `_DoAutoLinks()` from `_RunBlockGamut()` to
|
||||
`_RunSpanGamut()`.
|
||||
|
||||
* Sort-of fixed a bug where lines in the middle of hard-wrapped
|
||||
paragraphs, which lines look like the start of a list item,
|
||||
would accidentally trigger the creation of a list. E.g. a
|
||||
paragraph that looked like this:
|
||||
|
||||
I recommend upgrading to version
|
||||
8. Oops, now this line is treated
|
||||
as a sub-list.
|
||||
|
||||
This is fixed for top-level lists, but it can still happen for
|
||||
sub-lists. E.g., the following list item will not be parsed
|
||||
properly:
|
||||
|
||||
* I recommend upgrading to version
|
||||
8. Oops, now this line is treated
|
||||
as a sub-list.
|
||||
|
||||
Given Markdown's list-creation rules, I'm not sure this can
|
||||
be fixed.
|
||||
|
||||
* Fix for horizontal rules preceded by 2 or 3 spaces or followed by
|
||||
trailing spaces and tabs.
|
||||
|
||||
* Standalone HTML comments are now handled; previously, they'd get
|
||||
wrapped in a spurious `<p>` tag.
|
||||
|
||||
* `_HashHTMLBlocks()` now tolerates trailing spaces and tabs following
|
||||
HTML comments and `<hr/>` tags.
|
||||
|
||||
* Changed special case pattern for hashing `<hr>` tags in
|
||||
`_HashHTMLBlocks()` so that they must occur within three spaces
|
||||
of left margin. (With 4 spaces or a tab, they should be
|
||||
code blocks, but weren't before this fix.)
|
||||
|
||||
* Auto-linked email address can now optionally contain
|
||||
a 'mailto:' protocol. I.e. these are equivalent:
|
||||
|
||||
<mailto:user@example.com>
|
||||
<user@example.com>
|
||||
|
||||
* Fixed annoying bug where nested lists would wind up with
|
||||
spurious (and invalid) `<p>` tags.
|
||||
|
||||
* Changed `_StripLinkDefinitions()` so that link definitions must
|
||||
occur within three spaces of the left margin. Thus if you indent
|
||||
a link definition by four spaces or a tab, it will now be a code
|
||||
block.
|
||||
|
||||
* You can now write empty links:
|
||||
|
||||
[like this]()
|
||||
|
||||
and they'll be turned into anchor tags with empty href attributes.
|
||||
This should have worked before, but didn't.
|
||||
|
||||
* `***this***` and `___this___` are now turned into
|
||||
|
||||
<strong><em>this</em></strong>
|
||||
|
||||
Instead of
|
||||
|
||||
<strong><em>this</strong></em>
|
||||
|
||||
which isn't valid.
|
||||
|
||||
* Fixed problem for links defined with urls that include parens, e.g.:
|
||||
|
||||
[1]: http://sources.wikipedia.org/wiki/Middle_East_Policy_(Chomsky)
|
||||
|
||||
"Chomsky" was being erroneously treated as the URL's title.
|
||||
|
||||
* Double quotes in the title of an inline link used to give strange
|
||||
results (incorrectly made entities). Fixed.
|
||||
|
||||
* Tabs are now correctly changed into spaces. Previously, only
|
||||
the first tab was converted. In code blocks, the second one was too,
|
||||
but was not always correctly aligned.
|
||||
|
||||
* Fixed a bug where a tab character inserted after a quote on the same
|
||||
line could add a slash before the quotes.
|
||||
|
||||
This is "before" [tab] and "after" a tab.
|
||||
|
||||
Previously gave this result:
|
||||
|
||||
<p>This is \"before\" [tab] and "after" a tab.</p>
|
||||
|
||||
* Removed a call to `htmlentities`. This fixes a bug where multibyte
|
||||
characters present in the title of a link reference could lead to
|
||||
invalid utf-8 characters.
|
||||
|
||||
* Changed a regular expression in `_TokenizeHTML` that could lead to
|
||||
a segmentation fault with PHP 4.3.8 on Linux.
|
||||
|
||||
* Fixed some notices that could show up if PHP error reporting
|
||||
E_NOTICE flag was set.
|
||||
|
||||
|
||||
Copyright and License
|
||||
---------------------
|
||||
|
||||
Copyright (c) 2004-2006 Michel Fortin
|
||||
<http://www.michelf.com/>
|
||||
All rights reserved.
|
||||
|
||||
Based on Markdown
|
||||
Copyright (c) 2003-2005 John Gruber
|
||||
<http://daringfireball.net/>
|
||||
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.
|
||||
1014
markdown.php
1014
markdown.php
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue