serendipity_event_markdown 1.21
This commit is contained in:
parent
7842af973e
commit
6e01404ef7
|
@ -1,3 +1,17 @@
|
||||||
|
Version 1.21:
|
||||||
|
=============
|
||||||
|
|
||||||
|
- update to PHP Markdown 1.0.2
|
||||||
|
read http://michelf.ca/projects/php-markdown/
|
||||||
|
- update to PHP Markdown Extra 1.2.8
|
||||||
|
- include new lib version 1.4.0
|
||||||
|
- added optional SmartyPants library, of August, 2013 dev.
|
||||||
|
This is a library package that includes the PHP SmartyPants and its
|
||||||
|
sibling PHP SmartyPants Typographer with additional features.
|
||||||
|
SmartyPants is a free web typography prettifyier tool for web writers.
|
||||||
|
It easily translates plain ASCII punctuation characters into "smart"
|
||||||
|
typographic punctuation HTML entities.
|
||||||
|
- extend to PHP >= 5.3 only (while lib using namespaces)
|
||||||
|
|
||||||
|
|
||||||
Version 1.1.5:
|
Version 1.1.5:
|
||||||
|
|
36
serendipity_event_markdown/License.text
Normal file
36
serendipity_event_markdown/License.text
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
PHP Markdown
|
||||||
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Based on Markdown
|
||||||
|
Copyright (c) 2003-2006 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.
|
895
serendipity_event_markdown/PHP Markdown Extra Readme.text
Normal file
895
serendipity_event_markdown/PHP Markdown Extra Readme.text
Normal file
|
@ -0,0 +1,895 @@
|
||||||
|
PHP Markdown Extra
|
||||||
|
==================
|
||||||
|
|
||||||
|
Version 1.2.8 - 29 Nov 2013
|
||||||
|
|
||||||
|
by Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
|
||||||
|
based on Markdown by John Gruber
|
||||||
|
<http://daringfireball.net/>
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
This is a special version of PHP Markdown with extra features. See
|
||||||
|
<http://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, as a modifier for
|
||||||
|
the Smarty templating engine, or as a replacement for Textile
|
||||||
|
formatting in any software that supports 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.
|
||||||
|
|
||||||
|
Before PHP 5.3.7, pcre.backtrack_limit defaults to 100 000, which is too small
|
||||||
|
in many situations. You might need to set it to higher values. Later PHP
|
||||||
|
releases defaults to 1 000 000, which is usually fine.
|
||||||
|
|
||||||
|
|
||||||
|
### WordPress ###
|
||||||
|
|
||||||
|
PHP Markdown works with [WordPress][wp], version 1.2 or later.
|
||||||
|
|
||||||
|
[wp]: http://wordpress.org/
|
||||||
|
|
||||||
|
1. To use PHP Markdown with WordPress, place the "markdown.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 as Markdown. Your entries will now be formatted by
|
||||||
|
PHP Markdown.
|
||||||
|
|
||||||
|
3. To post Markdown content, you'll first have to disable the
|
||||||
|
"visual" editor in the User section of WordPress.
|
||||||
|
|
||||||
|
You can configure PHP Markdown to not apply to the comments on your
|
||||||
|
WordPress weblog. See the "Configuration" section below.
|
||||||
|
|
||||||
|
It is not possible at this time to apply a different set of
|
||||||
|
filters to different entries. All your entries will be formatted by
|
||||||
|
PHP Markdown. This is a limitation of WordPress. If your old entries
|
||||||
|
are written in HTML (as opposed to another formatting syntax, like
|
||||||
|
Textile), they'll probably stay fine after installing Markdown.
|
||||||
|
|
||||||
|
|
||||||
|
### Replacing Textile in TextPattern ###
|
||||||
|
|
||||||
|
[TextPattern][tp] use [Textile][tx] to format your text. You can
|
||||||
|
replace Textile by Markdown in TextPattern without having to change
|
||||||
|
any code by using the *Textile Compatibility Mode*. This may work
|
||||||
|
with other software that expect Textile too.
|
||||||
|
|
||||||
|
[tx]: http://www.textism.com/tools/textile/
|
||||||
|
[tp]: http://www.textpattern.com/
|
||||||
|
|
||||||
|
1. Rename the "markdown.php" file to "classTextile.php". This will
|
||||||
|
make PHP Markdown behave as if it was the actual Textile parser.
|
||||||
|
|
||||||
|
2. Replace the "classTextile.php" file TextPattern installed in your
|
||||||
|
web directory. It can be found in the "lib" directory:
|
||||||
|
|
||||||
|
(site home)/textpattern/lib/
|
||||||
|
|
||||||
|
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://michelf.ca/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.
|
||||||
|
|
||||||
|
|
||||||
|
### Updating Markdown in Other Programs ###
|
||||||
|
|
||||||
|
Many web applications now ship with PHP Markdown, or have plugins to
|
||||||
|
perform the conversion to HTML. You can update PHP Markdown -- or
|
||||||
|
replace it with PHP Markdown Extra -- in many of these programs by
|
||||||
|
swapping the old "markdown.php" file for the new one.
|
||||||
|
|
||||||
|
Here is a short non-exhaustive list of some programs and where they
|
||||||
|
hide the "markdown.php" file.
|
||||||
|
|
||||||
|
| Program | Path to Markdown
|
||||||
|
| ------- | ----------------
|
||||||
|
| [Pivot][] | `(site home)/pivot/includes/markdown/`
|
||||||
|
|
||||||
|
If you're unsure if you can do this with your application, ask the
|
||||||
|
developer, or wait for the developer to update his application or
|
||||||
|
plugin with the new version of PHP Markdown.
|
||||||
|
|
||||||
|
[Pivot]: http://pivotlog.net/
|
||||||
|
|
||||||
|
|
||||||
|
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 "MARKDOWN_EMPTY_ELEMENT_SUFFIX"
|
||||||
|
definition 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
|
||||||
|
`MARKDOWN_WP_POSTS` or `MARKDOWN_WP_COMMENTS` definitions 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.ca>
|
||||||
|
|
||||||
|
Please include with your report: (1) the example input; (2) the output you
|
||||||
|
expected; (3) the output PHP Markdown actually produced.
|
||||||
|
|
||||||
|
If you have a problem where Markdown gives you an empty result, first check
|
||||||
|
that the backtrack limit is not too low by running `php --info | grep pcre`.
|
||||||
|
See Installation and Requirement above for details.
|
||||||
|
|
||||||
|
|
||||||
|
Version History
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Extra 1.2.8:
|
||||||
|
|
||||||
|
* Added backtick fenced code blocks, originally from Github-flavored Markdown.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.2
|
||||||
|
|
||||||
|
* Added support for the `tel:` URL scheme in automatic links.
|
||||||
|
|
||||||
|
<tel:+1-111-111-1111>
|
||||||
|
|
||||||
|
It gets converted to this (note the `tel:` prefix becomes invisible):
|
||||||
|
|
||||||
|
<a href="tel:+1-111-111-1111">+1-111-111-1111</a>
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.7 (11 Apr 2013):
|
||||||
|
|
||||||
|
* Added optional class and id attributes to images and links using the same
|
||||||
|
syntax as for headers:
|
||||||
|
|
||||||
|
[link](url){#id .class}
|
||||||
|
![img](url){#id .class}
|
||||||
|
|
||||||
|
It work too for reference-style links and images. In this case you need
|
||||||
|
to put those attributes at the reference definition:
|
||||||
|
|
||||||
|
[link][linkref] or [linkref]
|
||||||
|
![img][linkref]
|
||||||
|
|
||||||
|
[linkref]: url "optional title" {#id .class}
|
||||||
|
|
||||||
|
* Fixed a PHP notice message triggered when some table column separator
|
||||||
|
markers are missing on the separator line below column headers.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1q (11 Apr 2013):
|
||||||
|
|
||||||
|
* Fixed a small mistake that could cause the parser to retain an invalid
|
||||||
|
state related to parsing links across multiple runs. This was never
|
||||||
|
observed (that I know of), but it's still worth fixing.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.6 (13 Jan 2013):
|
||||||
|
|
||||||
|
* Headers can now have a class attribute. You can add a class inside the
|
||||||
|
extra attribute block which can optionally be put after a header:
|
||||||
|
|
||||||
|
### Header ### {#id .class1 .class2}
|
||||||
|
|
||||||
|
Spaces between components in the brace is optional.
|
||||||
|
|
||||||
|
* Fenced code blocks can also have a class and an id attribute. If you only
|
||||||
|
need to apply a class (typically to indicate the language of a code
|
||||||
|
snippet), you can write it like this:
|
||||||
|
|
||||||
|
~~~ html
|
||||||
|
<b>bold</b>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
or like this:
|
||||||
|
|
||||||
|
~~~ .html
|
||||||
|
<b>bold</b>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
There is a new configuration option `MARKDOWN_CODE_CLASS_PREFIX` you can
|
||||||
|
use if you need to append a prefix to the class name.
|
||||||
|
|
||||||
|
You might also opt to use an extra attribute block just like for headers:
|
||||||
|
|
||||||
|
~~~ {.html #id .codeclass}
|
||||||
|
<b>bold</b>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Note that class names added this way are not affected by the
|
||||||
|
MARKDOWN_CODE_CLASS_PREFIX.
|
||||||
|
|
||||||
|
A code block creates a `pre` HTML element containing a `code` element.
|
||||||
|
The `code` HTML element is the one that receives the attribute. If for
|
||||||
|
some reason you need attributes to be applied to the enclosing `pre`
|
||||||
|
element instead, you can set the MARKDOWN_CODE_ATTR_ON_PRE configuration
|
||||||
|
variable to true.
|
||||||
|
|
||||||
|
* Fixed an issue were consecutive fenced code blocks containing HTML-like
|
||||||
|
code would confuse the parser.
|
||||||
|
|
||||||
|
* Multiple references to the same footnote are now allowed.
|
||||||
|
|
||||||
|
* Fixed an issue where no_markup mode was ineffective.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1p (13 Jan 2013):
|
||||||
|
|
||||||
|
* Fixed an issue where some XML-style empty tags (such as `<br/>`) were not
|
||||||
|
recognized correctly as such when inserted into Markdown-formatted text.
|
||||||
|
|
||||||
|
* The following HTML 5 elements are treated as block elements when at the
|
||||||
|
root of an HTML block: `article`, `section`, `nav`, `aside`, `hgroup`,
|
||||||
|
`header`, `footer`, and `figure`. `svg` too.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1o (8 Jan 2012):
|
||||||
|
|
||||||
|
* Silenced a new warning introduced around PHP 5.3 complaining about
|
||||||
|
POSIX characters classes not being implemented. PHP Markdown does not
|
||||||
|
use POSIX character classes, but it nevertheless trigged that warning.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.5 (8 Jan 2012):
|
||||||
|
|
||||||
|
* Fixed an issue preventing fenced code blocks indented inside lists items
|
||||||
|
and elsewhere from being interpreted correctly.
|
||||||
|
|
||||||
|
* Fixed an issue where HTML tags inside fenced code blocks were sometime
|
||||||
|
not encoded with entities.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1n (10 Oct 2009):
|
||||||
|
|
||||||
|
* Enabled reference-style shortcut links. Now you can write reference-style
|
||||||
|
links with less brakets:
|
||||||
|
|
||||||
|
This is [my website].
|
||||||
|
|
||||||
|
[my website]: http://example.com/
|
||||||
|
|
||||||
|
This was added in the 1.0.2 betas, but commented out in the 1.0.1 branch,
|
||||||
|
waiting for the feature to be officialized. [But half of the other Markdown
|
||||||
|
implementations are supporting this syntax][half], so it makes sense for
|
||||||
|
compatibility's sake to allow it in PHP Markdown too.
|
||||||
|
|
||||||
|
[half]: http://babelmark.bobtfish.net/?markdown=This+is+%5Bmy+website%5D.%0D%0A%09%09%0D%0A%5Bmy+website%5D%3A+http%3A%2F%2Fexample.com%2F%0D%0A&src=1&dest=2
|
||||||
|
|
||||||
|
* Now accepting many valid email addresses in autolinks that were
|
||||||
|
previously rejected, such as:
|
||||||
|
|
||||||
|
<abc+mailbox/department=shipping@example.com>
|
||||||
|
<!#$%&'*+-/=?^_`.{|}~@example.com>
|
||||||
|
<"abc@def"@example.com>
|
||||||
|
<"Fred Bloggs"@example.com>
|
||||||
|
<jsmith@[192.0.2.1]>
|
||||||
|
|
||||||
|
* Now accepting spaces in URLs for inline and reference-style links. Such
|
||||||
|
URLs need to be surrounded by angle brakets. For instance:
|
||||||
|
|
||||||
|
[link text](<http://url/with space> "optional title")
|
||||||
|
|
||||||
|
[link text][ref]
|
||||||
|
[ref]: <http://url/with space> "optional title"
|
||||||
|
|
||||||
|
There is still a quirk which may prevent this from working correctly with
|
||||||
|
relative URLs in inline-style links however.
|
||||||
|
|
||||||
|
* Fix for adjacent list of different kind where the second list could
|
||||||
|
end as a sublist of the first when not separated by an empty line.
|
||||||
|
|
||||||
|
* Fixed a bug where inline-style links wouldn't be recognized when the link
|
||||||
|
definition contains a line break between the url and the title.
|
||||||
|
|
||||||
|
* Fixed a bug where tags where the name contains an underscore aren't parsed
|
||||||
|
correctly.
|
||||||
|
|
||||||
|
* Fixed some corner-cases mixing underscore-ephasis and asterisk-emphasis.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.4 (10 Oct 2009):
|
||||||
|
|
||||||
|
* Fixed a problem where unterminated tags in indented code blocks could
|
||||||
|
prevent proper escaping of characaters in the code block.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.3 (31 Dec 2008):
|
||||||
|
|
||||||
|
* In WordPress pages featuring more than one post, footnote id prefixes are
|
||||||
|
now automatically applied with the current post ID to avoid clashes
|
||||||
|
between footnotes belonging to different posts.
|
||||||
|
|
||||||
|
* Fix for a bug introduced in Extra 1.2 where block-level HTML tags where
|
||||||
|
not detected correctly, thus the addition of erroneous `<p>` tags and
|
||||||
|
interpretation of their content as Markdown-formatted instead of
|
||||||
|
HTML-formatted.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.2 (21 Jun 2008):
|
||||||
|
|
||||||
|
* Fixed a problem where abbreviation definitions, footnote
|
||||||
|
definitions and link references were stripped inside
|
||||||
|
fenced code blocks.
|
||||||
|
|
||||||
|
* Fixed a bug where characters such as `"` in abbreviation
|
||||||
|
definitions weren't properly encoded to HTML entities.
|
||||||
|
|
||||||
|
* Fixed a bug where double quotes `"` were not correctly encoded
|
||||||
|
as HTML entities when used inside a footnote reference id.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1m (21 Jun 2008):
|
||||||
|
|
||||||
|
* Lists can now have empty items.
|
||||||
|
|
||||||
|
* Rewrote the emphasis and strong emphasis parser to fix some issues
|
||||||
|
with odly placed and overlong markers.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2.1 (27 May 2008):
|
||||||
|
|
||||||
|
* Fixed a problem where Markdown headers and horizontal rules were
|
||||||
|
transformed into their HTML equivalent inside fenced code blocks.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.2 (11 May 2008):
|
||||||
|
|
||||||
|
* Added fenced code block syntax which don't require indentation
|
||||||
|
and can start and end with blank lines. A fenced code block
|
||||||
|
starts with a line of consecutive tilde (~) and ends on the
|
||||||
|
next line with the same number of consecutive tilde. Here's an
|
||||||
|
example:
|
||||||
|
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
Hello World!
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Rewrote parts of the HTML block parser to better accomodate
|
||||||
|
fenced code blocks.
|
||||||
|
|
||||||
|
* Footnotes may now be referenced from within another footnote.
|
||||||
|
|
||||||
|
* Added programatically-settable parser property `predef_attr` for
|
||||||
|
predefined attribute definitions.
|
||||||
|
|
||||||
|
* Fixed an issue where an indented code block preceded by a blank
|
||||||
|
line containing some other whitespace would confuse the HTML
|
||||||
|
block parser into creating an HTML block when it should have
|
||||||
|
been code.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1l (11 May 2008):
|
||||||
|
|
||||||
|
* Now removing the UTF-8 BOM at the start of a document, if present.
|
||||||
|
|
||||||
|
* Now accepting capitalized URI schemes (such as HTTP:) in automatic
|
||||||
|
links, such as `<HTTP://EXAMPLE.COM/>`.
|
||||||
|
|
||||||
|
* Fixed a problem where `<hr@example.com>` was seen as a horizontal
|
||||||
|
rule instead of an automatic link.
|
||||||
|
|
||||||
|
* Fixed an issue where some characters in Markdown-generated HTML
|
||||||
|
attributes weren't properly escaped with entities.
|
||||||
|
|
||||||
|
* Fix for code blocks as first element of a list item. Previously,
|
||||||
|
this didn't create any code block for item 2:
|
||||||
|
|
||||||
|
* Item 1 (regular paragraph)
|
||||||
|
|
||||||
|
* Item 2 (code block)
|
||||||
|
|
||||||
|
* A code block starting on the second line of a document wasn't seen
|
||||||
|
as a code block. This has been fixed.
|
||||||
|
|
||||||
|
* Added programatically-settable parser properties `predef_urls` and
|
||||||
|
`predef_titles` for predefined URLs and titles for reference-style
|
||||||
|
links. To use this, your PHP code must call the parser this way:
|
||||||
|
|
||||||
|
$parser = new Markdwon_Parser;
|
||||||
|
$parser->predef_urls = array('linkref' => 'http://example.com');
|
||||||
|
$html = $parser->transform($text);
|
||||||
|
|
||||||
|
You can then use the URL as a normal link reference:
|
||||||
|
|
||||||
|
[my link][linkref]
|
||||||
|
[my link][linkRef]
|
||||||
|
|
||||||
|
Reference names in the parser properties *must* be lowercase.
|
||||||
|
Reference names in the Markdown source may have any case.
|
||||||
|
|
||||||
|
* Added `setup` and `teardown` methods which can be used by subclassers
|
||||||
|
as hook points to arrange the state of some parser variables before and
|
||||||
|
after parsing.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.7 (26 Sep 2007):
|
||||||
|
|
||||||
|
1.0.1k (26 Sep 2007):
|
||||||
|
|
||||||
|
* Fixed a problem introduced in 1.0.1i where three or more identical
|
||||||
|
uppercase letters, as well as a few other symbols, would trigger
|
||||||
|
a horizontal line.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.6 (4 Sep 2007):
|
||||||
|
|
||||||
|
1.0.1j (4 Sep 2007):
|
||||||
|
|
||||||
|
* Fixed a problem introduced in 1.0.1i where the closing `code` and
|
||||||
|
`pre` tags at the end of a code block were appearing in the wrong
|
||||||
|
order.
|
||||||
|
|
||||||
|
* Overriding configuration settings by defining constants from an
|
||||||
|
external before markdown.php is included is now possible without
|
||||||
|
producing a PHP warning.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.5 (31 Aug 2007):
|
||||||
|
|
||||||
|
1.0.1i (31 Aug 2007):
|
||||||
|
|
||||||
|
* Fixed a problem where an escaped backslash before a code span
|
||||||
|
would prevent the code span from being created. This should now
|
||||||
|
work as expected:
|
||||||
|
|
||||||
|
Litteral backslash: \\`code span`
|
||||||
|
|
||||||
|
* Overall speed improvements, especially with long documents.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.4 (3 Aug 2007):
|
||||||
|
|
||||||
|
1.0.1h (3 Aug 2007):
|
||||||
|
|
||||||
|
* Added two properties (`no_markup` and `no_entities`) to the parser
|
||||||
|
allowing HTML tags and entities to be disabled.
|
||||||
|
|
||||||
|
* Fix for a problem introduced in 1.0.1g where posting comments in
|
||||||
|
WordPress would trigger PHP warnings and cause some markup to be
|
||||||
|
incorrectly filtered by the kses filter in WordPress.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.3 (3 Jul 2007):
|
||||||
|
|
||||||
|
* Fixed a performance problem when parsing some invalid HTML as an HTML
|
||||||
|
block which was resulting in too much recusion and a segmentation fault
|
||||||
|
for long documents.
|
||||||
|
|
||||||
|
* The markdown="" attribute now accepts unquoted values.
|
||||||
|
|
||||||
|
* Fixed an issue where underscore-emphasis didn't work when applied on the
|
||||||
|
first or the last word of an element having the markdown="1" or
|
||||||
|
markdown="span" attribute set unless there was some surrounding whitespace.
|
||||||
|
This didn't work:
|
||||||
|
|
||||||
|
<p markdown="1">_Hello_ _world_</p>
|
||||||
|
|
||||||
|
Now it does produce emphasis as expected.
|
||||||
|
|
||||||
|
* Fixed an issue preventing footnotes from working when the parser's
|
||||||
|
footnote id prefix variable (fn_id_prefix) is not empty.
|
||||||
|
|
||||||
|
* Fixed a performance problem where the regular expression for strong
|
||||||
|
emphasis introduced in version 1.1 could sometime be long to process,
|
||||||
|
give slightly wrong results, and in some circumstances could remove
|
||||||
|
entirely the content for a whole paragraph.
|
||||||
|
|
||||||
|
* Fixed an issue were abbreviations tags could be incorrectly added
|
||||||
|
inside URLs and title of links.
|
||||||
|
|
||||||
|
* Placing footnote markers inside a link, resulting in two nested links, is
|
||||||
|
no longer allowed.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1g (3 Jul 2007):
|
||||||
|
|
||||||
|
* Fix for PHP 5 compiled without the mbstring module. Previous fix to
|
||||||
|
calculate the length of UTF-8 strings in `detab` when `mb_strlen` is
|
||||||
|
not available was only working with PHP 4.
|
||||||
|
|
||||||
|
* Fixed a problem with WordPress 2.x where full-content posts in RSS feeds
|
||||||
|
were not processed correctly by Markdown.
|
||||||
|
|
||||||
|
* Now supports URLs containing literal parentheses for inline links
|
||||||
|
and images, such as:
|
||||||
|
|
||||||
|
[WIMP](http://en.wikipedia.org/wiki/WIMP_(computing))
|
||||||
|
|
||||||
|
Such parentheses may be arbitrarily nested, but must be
|
||||||
|
balanced. Unbalenced parentheses are allowed however when the URL
|
||||||
|
when escaped or when the URL is enclosed in angle brakets `<>`.
|
||||||
|
|
||||||
|
* Fixed a performance problem where the regular expression for strong
|
||||||
|
emphasis introduced in version 1.0.1d could sometime be long to process,
|
||||||
|
give slightly wrong results, and in some circumstances could remove
|
||||||
|
entirely the content for a whole paragraph.
|
||||||
|
|
||||||
|
* Some change in version 1.0.1d made possible the incorrect nesting of
|
||||||
|
anchors within each other. This is now fixed.
|
||||||
|
|
||||||
|
* Fixed a rare issue where certain MD5 hashes in the content could
|
||||||
|
be changed to their corresponding text. For instance, this:
|
||||||
|
|
||||||
|
The MD5 value for "+" is "26b17225b626fb9238849fd60eabdf60".
|
||||||
|
|
||||||
|
was incorrectly changed to this in previous versions of PHP Markdown:
|
||||||
|
|
||||||
|
<p>The MD5 value for "+" is "+".</p>
|
||||||
|
|
||||||
|
* Now convert escaped characters to their numeric character
|
||||||
|
references equivalent.
|
||||||
|
|
||||||
|
This fix an integration issue with SmartyPants and backslash escapes.
|
||||||
|
Since Markdown and SmartyPants have some escapable characters in common,
|
||||||
|
it was sometime necessary to escape them twice. Previously, two
|
||||||
|
backslashes were sometime required to prevent Markdown from "eating" the
|
||||||
|
backslash before SmartyPants sees it:
|
||||||
|
|
||||||
|
Here are two hyphens: \\--
|
||||||
|
|
||||||
|
Now, only one backslash will do:
|
||||||
|
|
||||||
|
Here are two hyphens: \--
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.2 (7 Feb 2007)
|
||||||
|
|
||||||
|
* Fixed an issue where headers preceded too closely by a paragraph
|
||||||
|
(with no blank line separating them) where put inside the paragraph.
|
||||||
|
|
||||||
|
* Added the missing TextileRestricted method that was added to regular
|
||||||
|
PHP Markdown since 1.0.1d but which I forgot to add to Extra.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1f (7 Feb 2007):
|
||||||
|
|
||||||
|
* Fixed an issue with WordPress where manually-entered excerpts, but
|
||||||
|
not the auto-generated ones, would contain nested paragraphs.
|
||||||
|
|
||||||
|
* Fixed an issue introduced in 1.0.1d where headers and blockquotes
|
||||||
|
preceded too closely by a paragraph (not separated by a blank line)
|
||||||
|
where incorrectly put inside the paragraph.
|
||||||
|
|
||||||
|
* Fixed an issue introduced in 1.0.1d in the tokenizeHTML method where
|
||||||
|
two consecutive code spans would be merged into one when together they
|
||||||
|
form a valid tag in a multiline paragraph.
|
||||||
|
|
||||||
|
* Fixed an long-prevailing issue where blank lines in code blocks would
|
||||||
|
be doubled when the code block is in a list item.
|
||||||
|
|
||||||
|
This was due to the list processing functions relying on artificially
|
||||||
|
doubled blank lines to correctly determine when list items should
|
||||||
|
contain block-level content. The list item processing model was thus
|
||||||
|
changed to avoid the need for double blank lines.
|
||||||
|
|
||||||
|
* Fixed an issue with `<% asp-style %>` instructions used as inline
|
||||||
|
content where the opening `<` was encoded as `<`.
|
||||||
|
|
||||||
|
* Fixed a parse error occuring when PHP is configured to accept
|
||||||
|
ASP-style delimiters as boundaries for PHP scripts.
|
||||||
|
|
||||||
|
* Fixed a bug introduced in 1.0.1d where underscores in automatic links
|
||||||
|
got swapped with emphasis tags.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1.1 (28 Dec 2006)
|
||||||
|
|
||||||
|
* Fixed a problem where whitespace at the end of the line of an atx-style
|
||||||
|
header would cause tailing `#` to appear as part of the header's content.
|
||||||
|
This was caused by a small error in the regex that handles the definition
|
||||||
|
for the id attribute in PHP Markdown Extra.
|
||||||
|
|
||||||
|
* Fixed a problem where empty abbreviations definitions would eat the
|
||||||
|
following line as its definition.
|
||||||
|
|
||||||
|
* Fixed an issue with calling the Markdown parser repetitivly with text
|
||||||
|
containing footnotes. The footnote hashes were not reinitialized properly.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1e (28 Dec 2006)
|
||||||
|
|
||||||
|
* Added support for internationalized domain names for email addresses in
|
||||||
|
automatic link. Improved the speed at which email addresses are converted
|
||||||
|
to entities. Thanks to Milian Wolff for his optimisations.
|
||||||
|
|
||||||
|
* Made deterministic the conversion to entities of email addresses in
|
||||||
|
automatic links. This means that a given email address will always be
|
||||||
|
encoded the same way.
|
||||||
|
|
||||||
|
* PHP Markdown will now use its own function to calculate the length of an
|
||||||
|
UTF-8 string in `detab` when `mb_strlen` is not available instead of
|
||||||
|
giving a fatal error.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 1.1 (1 Dec 2006)
|
||||||
|
|
||||||
|
* Added a syntax for footnotes.
|
||||||
|
|
||||||
|
* Added an experimental syntax to define abbreviations.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1d (1 Dec 2006)
|
||||||
|
|
||||||
|
* Fixed a bug where inline images always had an empty title attribute. The
|
||||||
|
title attribute is now present only when explicitly defined.
|
||||||
|
|
||||||
|
* Link references definitions can now have an empty title, previously if the
|
||||||
|
title was defined but left empty the link definition was ignored. This can
|
||||||
|
be useful if you want an empty title attribute in images to hide the
|
||||||
|
tooltip in Internet Explorer.
|
||||||
|
|
||||||
|
* Made `detab` aware of UTF-8 characters. UTF-8 multi-byte sequences are now
|
||||||
|
correctly mapped to one character instead of the number of bytes.
|
||||||
|
|
||||||
|
* Fixed a small bug with WordPress where WordPress' default filter `wpautop`
|
||||||
|
was not properly deactivated on comment text, resulting in hard line breaks
|
||||||
|
where Markdown do not prescribes them.
|
||||||
|
|
||||||
|
* Added a `TextileRestrited` method to the textile compatibility mode. There
|
||||||
|
is no restriction however, as Markdown does not have a restricted mode at
|
||||||
|
this point. This should make PHP Markdown work again in the latest
|
||||||
|
versions of TextPattern.
|
||||||
|
|
||||||
|
* Converted PHP Markdown to a object-oriented design.
|
||||||
|
|
||||||
|
* Changed span and block gamut methods so that they loop over a
|
||||||
|
customizable list of methods. This makes subclassing the parser a more
|
||||||
|
interesting option for creating syntax extensions.
|
||||||
|
|
||||||
|
* Also added a "document" gamut loop which can be used to hook document-level
|
||||||
|
methods (like for striping link definitions).
|
||||||
|
|
||||||
|
* Changed all methods which were inserting HTML code so that they now return
|
||||||
|
a hashed representation of the code. New methods `hashSpan` and `hashBlock`
|
||||||
|
are used to hash respectivly span- and block-level generated content. This
|
||||||
|
has a couple of significant effects:
|
||||||
|
|
||||||
|
1. It prevents invalid nesting of Markdown-generated elements which
|
||||||
|
could occur occuring with constructs like `*something [link*][1]`.
|
||||||
|
2. It prevents problems occuring with deeply nested lists on which
|
||||||
|
paragraphs were ill-formed.
|
||||||
|
3. It removes the need to call `hashHTMLBlocks` twice during the the
|
||||||
|
block gamut.
|
||||||
|
|
||||||
|
Hashes are turned back to HTML prior output.
|
||||||
|
|
||||||
|
* Made the block-level HTML parser smarter using a specially-crafted regular
|
||||||
|
expression capable of handling nested tags.
|
||||||
|
|
||||||
|
* Solved backtick issues in tag attributes by rewriting the HTML tokenizer to
|
||||||
|
be aware of code spans. All these lines should work correctly now:
|
||||||
|
|
||||||
|
<span attr='`ticks`'>bar</span>
|
||||||
|
<span attr='``double ticks``'>bar</span>
|
||||||
|
`<test a="` content of attribute `">`
|
||||||
|
|
||||||
|
* Changed the parsing of HTML comments to match simply from `<!--` to `-->`
|
||||||
|
instead using of the more complicated SGML-style rule with paired `--`.
|
||||||
|
This is how most browsers parse comments and how XML defines them too.
|
||||||
|
|
||||||
|
* `<address>` has been added to the list of block-level elements and is now
|
||||||
|
treated as an HTML block instead of being wrapped within paragraph tags.
|
||||||
|
|
||||||
|
* Now only trim trailing newlines from code blocks, instead of trimming
|
||||||
|
all trailing whitespace characters.
|
||||||
|
|
||||||
|
* Fixed bug where this:
|
||||||
|
|
||||||
|
[text](http://m.com "title" )
|
||||||
|
|
||||||
|
wasn't working as expected, because the parser wasn't allowing for spaces
|
||||||
|
before the closing paren.
|
||||||
|
|
||||||
|
* Filthy hack to support markdown='1' in div tags.
|
||||||
|
|
||||||
|
* _DoAutoLinks() now supports the 'dict://' URL scheme.
|
||||||
|
|
||||||
|
* PHP- and ASP-style processor instructions are now protected as
|
||||||
|
raw HTML blocks.
|
||||||
|
|
||||||
|
<? ... ?>
|
||||||
|
<% ... %>
|
||||||
|
|
||||||
|
* Fix for escaped backticks still triggering code spans:
|
||||||
|
|
||||||
|
There are two raw backticks here: \` and here: \`, not a code span
|
||||||
|
|
||||||
|
|
||||||
|
Extra 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.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 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.
|
||||||
|
|
||||||
|
|
||||||
|
Extra 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 ?> ##
|
||||||
|
|
||||||
|
|
||||||
|
Extra 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.
|
||||||
|
|
||||||
|
Extra 1.0b1 (25 Jun 2005)
|
||||||
|
|
||||||
|
* First public release of PHP Markdown Extra.
|
||||||
|
|
||||||
|
|
||||||
|
Copyright and License
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
PHP Markdown & Extra
|
||||||
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
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.
|
796
serendipity_event_markdown/PHP Markdown Readme.text
Normal file
796
serendipity_event_markdown/PHP Markdown Readme.text
Normal file
|
@ -0,0 +1,796 @@
|
||||||
|
PHP Markdown
|
||||||
|
============
|
||||||
|
|
||||||
|
Version 1.0.2 - 29 Nov 2013
|
||||||
|
|
||||||
|
by Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
|
||||||
|
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, as a modifier for
|
||||||
|
the Smarty templating engine, or as a replacement for Textile
|
||||||
|
formatting in any software that supports 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.
|
||||||
|
|
||||||
|
Before PHP 5.3.7, pcre.backtrack_limit defaults to 100 000, which is too small
|
||||||
|
in many situations. You might need to set it to higher values. Later PHP
|
||||||
|
releases defaults to 1 000 000, which is usually fine.
|
||||||
|
|
||||||
|
|
||||||
|
### WordPress ###
|
||||||
|
|
||||||
|
PHP Markdown works with [WordPress][wp], version 1.2 or later.
|
||||||
|
|
||||||
|
[wp]: http://wordpress.org/
|
||||||
|
|
||||||
|
1. To use PHP Markdown with WordPress, place the "markdown.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 as Markdown. Your entries will now be formatted by
|
||||||
|
PHP Markdown.
|
||||||
|
|
||||||
|
3. To post Markdown content, you'll first have to disable the
|
||||||
|
"visual" editor in the User section of WordPress.
|
||||||
|
|
||||||
|
You can configure PHP Markdown to not apply to the comments on your
|
||||||
|
WordPress weblog. See the "Configuration" section below.
|
||||||
|
|
||||||
|
It is not possible at this time to apply a different set of
|
||||||
|
filters to different entries. All your entries will be formatted by
|
||||||
|
PHP Markdown. This is a limitation of WordPress. If your old entries
|
||||||
|
are written in HTML (as opposed to another formatting syntax, like
|
||||||
|
Textile), they'll probably stay fine after installing Markdown.
|
||||||
|
|
||||||
|
|
||||||
|
### Replacing Textile in TextPattern ###
|
||||||
|
|
||||||
|
[TextPattern][tp] use [Textile][tx] to format your text. You can
|
||||||
|
replace Textile by Markdown in TextPattern without having to change
|
||||||
|
any code by using the *Textile Compatibility Mode*. This may work
|
||||||
|
with other software that expect Textile too.
|
||||||
|
|
||||||
|
[tx]: http://www.textism.com/tools/textile/
|
||||||
|
[tp]: http://www.textpattern.com/
|
||||||
|
|
||||||
|
1. Rename the "markdown.php" file to "classTextile.php". This will
|
||||||
|
make PHP Markdown behave as if it was the actual Textile parser.
|
||||||
|
|
||||||
|
2. Replace the "classTextile.php" file TextPattern installed in your
|
||||||
|
web directory. It can be found in the "lib" directory:
|
||||||
|
|
||||||
|
(site home)/textpattern/lib/
|
||||||
|
|
||||||
|
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://michelf.ca/projects/php-smartypants/
|
||||||
|
|
||||||
|
|
||||||
|
### Updating Markdown in Other Programs ###
|
||||||
|
|
||||||
|
Many web applications now ship with PHP Markdown, or have plugins to
|
||||||
|
perform the conversion to HTML. You can update PHP Markdown in many of
|
||||||
|
these programs by swapping the old "markdown.php" file for the new one.
|
||||||
|
|
||||||
|
Here is a short non-exhaustive list of some programs and where they
|
||||||
|
hide the "markdown.php" file.
|
||||||
|
|
||||||
|
| Program | Path to Markdown
|
||||||
|
| ------- | ----------------
|
||||||
|
| [Pivot][] | `(site home)/pivot/includes/markdown/markdown.php`
|
||||||
|
|
||||||
|
If you're unsure if you can do this with your application, ask the
|
||||||
|
developer, or wait for the developer to update his application or
|
||||||
|
plugin with the new version of PHP Markdown.
|
||||||
|
|
||||||
|
[Pivot]: http://pivotlog.net/
|
||||||
|
|
||||||
|
|
||||||
|
### 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 "MARKDOWN_EMPTY_ELEMENT_SUFFIX"
|
||||||
|
definition 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
|
||||||
|
`MARKDOWN_WP_POSTS` or `MARKDOWN_WP_COMMENTS` definitions 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.ca>
|
||||||
|
|
||||||
|
Please include with your report: (1) the example input; (2) the output you
|
||||||
|
expected; (3) the output PHP Markdown actually produced.
|
||||||
|
|
||||||
|
If you have a problem where Markdown gives you an empty result, first check
|
||||||
|
that the backtrack limit is not too low by running `php --info | grep pcre`.
|
||||||
|
See Installation and Requirement above for details.
|
||||||
|
|
||||||
|
|
||||||
|
Version History
|
||||||
|
---------------
|
||||||
|
|
||||||
|
1.0.2 (29 Nov 2013)
|
||||||
|
|
||||||
|
* Added support for the `tel:` URL scheme in automatic links.
|
||||||
|
|
||||||
|
<tel:+1-111-111-1111>
|
||||||
|
|
||||||
|
It gets converted to this (note the `tel:` prefix becomes invisible):
|
||||||
|
|
||||||
|
<a href="tel:+1-111-111-1111">+1-111-111-1111</a>
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1q (11 Apr 2013):
|
||||||
|
|
||||||
|
* Fixed a small mistake that could cause the parser to retain an invalid
|
||||||
|
state related to parsing links across multiple runs. This was never
|
||||||
|
observed (that I know of), but it's still worth fixing.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1p (13 Jan 2013):
|
||||||
|
|
||||||
|
* Fixed an issue where some XML-style empty tags (such as `<br/>`) were not
|
||||||
|
recognized correctly as such when inserted into Markdown-formatted text.
|
||||||
|
|
||||||
|
* The following HTML 5 elements are treated as block elements when at the
|
||||||
|
root of an HTML block: `article`, `section`, `nav`, `aside`, `hgroup`,
|
||||||
|
`header`, `footer`, and `figure`. `svg` too.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1o (8 Jan 2012):
|
||||||
|
|
||||||
|
* Silenced a new warning introduced around PHP 5.3 complaining about
|
||||||
|
POSIX characters classes not being implemented. PHP Markdown does not
|
||||||
|
use POSIX character classes, but it nevertheless trigged that warning.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1n (10 Oct 2009):
|
||||||
|
|
||||||
|
* Enabled reference-style shortcut links. Now you can write reference-style
|
||||||
|
links with less brakets:
|
||||||
|
|
||||||
|
This is [my website].
|
||||||
|
|
||||||
|
[my website]: http://example.com/
|
||||||
|
|
||||||
|
This was added in the 1.0.2 betas, but commented out in the 1.0.1 branch,
|
||||||
|
waiting for the feature to be officialized. [But half of the other Markdown
|
||||||
|
implementations are supporting this syntax][half], so it makes sense for
|
||||||
|
compatibility's sake to allow it in PHP Markdown too.
|
||||||
|
|
||||||
|
[half]: http://babelmark.bobtfish.net/?markdown=This+is+%5Bmy+website%5D.%0D%0A%09%09%0D%0A%5Bmy+website%5D%3A+http%3A%2F%2Fexample.com%2F%0D%0A&src=1&dest=2
|
||||||
|
|
||||||
|
* Now accepting many valid email addresses in autolinks that were
|
||||||
|
previously rejected, such as:
|
||||||
|
|
||||||
|
<abc+mailbox/department=shipping@example.com>
|
||||||
|
<!#$%&'*+-/=?^_`.{|}~@example.com>
|
||||||
|
<"abc@def"@example.com>
|
||||||
|
<"Fred Bloggs"@example.com>
|
||||||
|
<jsmith@[192.0.2.1]>
|
||||||
|
|
||||||
|
* Now accepting spaces in URLs for inline and reference-style links. Such
|
||||||
|
URLs need to be surrounded by angle brakets. For instance:
|
||||||
|
|
||||||
|
[link text](<http://url/with space> "optional title")
|
||||||
|
|
||||||
|
[link text][ref]
|
||||||
|
[ref]: <http://url/with space> "optional title"
|
||||||
|
|
||||||
|
There is still a quirk which may prevent this from working correctly with
|
||||||
|
relative URLs in inline-style links however.
|
||||||
|
|
||||||
|
* Fix for adjacent list of different kind where the second list could
|
||||||
|
end as a sublist of the first when not separated by an empty line.
|
||||||
|
|
||||||
|
* Fixed a bug where inline-style links wouldn't be recognized when the link
|
||||||
|
definition contains a line break between the url and the title.
|
||||||
|
|
||||||
|
* Fixed a bug where tags where the name contains an underscore aren't parsed
|
||||||
|
correctly.
|
||||||
|
|
||||||
|
* Fixed some corner-cases mixing underscore-ephasis and asterisk-emphasis.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1m (21 Jun 2008):
|
||||||
|
|
||||||
|
* Lists can now have empty items.
|
||||||
|
|
||||||
|
* Rewrote the emphasis and strong emphasis parser to fix some issues
|
||||||
|
with odly placed and overlong markers.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1l (11 May 2008):
|
||||||
|
|
||||||
|
* Now removing the UTF-8 BOM at the start of a document, if present.
|
||||||
|
|
||||||
|
* Now accepting capitalized URI schemes (such as HTTP:) in automatic
|
||||||
|
links, such as `<HTTP://EXAMPLE.COM/>`.
|
||||||
|
|
||||||
|
* Fixed a problem where `<hr@example.com>` was seen as a horizontal
|
||||||
|
rule instead of an automatic link.
|
||||||
|
|
||||||
|
* Fixed an issue where some characters in Markdown-generated HTML
|
||||||
|
attributes weren't properly escaped with entities.
|
||||||
|
|
||||||
|
* Fix for code blocks as first element of a list item. Previously,
|
||||||
|
this didn't create any code block for item 2:
|
||||||
|
|
||||||
|
* Item 1 (regular paragraph)
|
||||||
|
|
||||||
|
* Item 2 (code block)
|
||||||
|
|
||||||
|
* A code block starting on the second line of a document wasn't seen
|
||||||
|
as a code block. This has been fixed.
|
||||||
|
|
||||||
|
* Added programatically-settable parser properties `predef_urls` and
|
||||||
|
`predef_titles` for predefined URLs and titles for reference-style
|
||||||
|
links. To use this, your PHP code must call the parser this way:
|
||||||
|
|
||||||
|
$parser = new Markdwon_Parser;
|
||||||
|
$parser->predef_urls = array('linkref' => 'http://example.com');
|
||||||
|
$html = $parser->transform($text);
|
||||||
|
|
||||||
|
You can then use the URL as a normal link reference:
|
||||||
|
|
||||||
|
[my link][linkref]
|
||||||
|
[my link][linkRef]
|
||||||
|
|
||||||
|
Reference names in the parser properties *must* be lowercase.
|
||||||
|
Reference names in the Markdown source may have any case.
|
||||||
|
|
||||||
|
* Added `setup` and `teardown` methods which can be used by subclassers
|
||||||
|
as hook points to arrange the state of some parser variables before and
|
||||||
|
after parsing.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1k (26 Sep 2007):
|
||||||
|
|
||||||
|
* Fixed a problem introduced in 1.0.1i where three or more identical
|
||||||
|
uppercase letters, as well as a few other symbols, would trigger
|
||||||
|
a horizontal line.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1j (4 Sep 2007):
|
||||||
|
|
||||||
|
* Fixed a problem introduced in 1.0.1i where the closing `code` and
|
||||||
|
`pre` tags at the end of a code block were appearing in the wrong
|
||||||
|
order.
|
||||||
|
|
||||||
|
* Overriding configuration settings by defining constants from an
|
||||||
|
external before markdown.php is included is now possible without
|
||||||
|
producing a PHP warning.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1i (31 Aug 2007):
|
||||||
|
|
||||||
|
* Fixed a problem where an escaped backslash before a code span
|
||||||
|
would prevent the code span from being created. This should now
|
||||||
|
work as expected:
|
||||||
|
|
||||||
|
Litteral backslash: \\`code span`
|
||||||
|
|
||||||
|
* Overall speed improvements, especially with long documents.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1h (3 Aug 2007):
|
||||||
|
|
||||||
|
* Added two properties (`no_markup` and `no_entities`) to the parser
|
||||||
|
allowing HTML tags and entities to be disabled.
|
||||||
|
|
||||||
|
* Fix for a problem introduced in 1.0.1g where posting comments in
|
||||||
|
WordPress would trigger PHP warnings and cause some markup to be
|
||||||
|
incorrectly filtered by the kses filter in WordPress.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1g (3 Jul 2007):
|
||||||
|
|
||||||
|
* Fix for PHP 5 compiled without the mbstring module. Previous fix to
|
||||||
|
calculate the length of UTF-8 strings in `detab` when `mb_strlen` is
|
||||||
|
not available was only working with PHP 4.
|
||||||
|
|
||||||
|
* Fixed a problem with WordPress 2.x where full-content posts in RSS feeds
|
||||||
|
were not processed correctly by Markdown.
|
||||||
|
|
||||||
|
* Now supports URLs containing literal parentheses for inline links
|
||||||
|
and images, such as:
|
||||||
|
|
||||||
|
[WIMP](http://en.wikipedia.org/wiki/WIMP_(computing))
|
||||||
|
|
||||||
|
Such parentheses may be arbitrarily nested, but must be
|
||||||
|
balanced. Unbalenced parentheses are allowed however when the URL
|
||||||
|
when escaped or when the URL is enclosed in angle brakets `<>`.
|
||||||
|
|
||||||
|
* Fixed a performance problem where the regular expression for strong
|
||||||
|
emphasis introduced in version 1.0.1d could sometime be long to process,
|
||||||
|
give slightly wrong results, and in some circumstances could remove
|
||||||
|
entirely the content for a whole paragraph.
|
||||||
|
|
||||||
|
* Some change in version 1.0.1d made possible the incorrect nesting of
|
||||||
|
anchors within each other. This is now fixed.
|
||||||
|
|
||||||
|
* Fixed a rare issue where certain MD5 hashes in the content could
|
||||||
|
be changed to their corresponding text. For instance, this:
|
||||||
|
|
||||||
|
The MD5 value for "+" is "26b17225b626fb9238849fd60eabdf60".
|
||||||
|
|
||||||
|
was incorrectly changed to this in previous versions of PHP Markdown:
|
||||||
|
|
||||||
|
<p>The MD5 value for "+" is "+".</p>
|
||||||
|
|
||||||
|
* Now convert escaped characters to their numeric character
|
||||||
|
references equivalent.
|
||||||
|
|
||||||
|
This fix an integration issue with SmartyPants and backslash escapes.
|
||||||
|
Since Markdown and SmartyPants have some escapable characters in common,
|
||||||
|
it was sometime necessary to escape them twice. Previously, two
|
||||||
|
backslashes were sometime required to prevent Markdown from "eating" the
|
||||||
|
backslash before SmartyPants sees it:
|
||||||
|
|
||||||
|
Here are two hyphens: \\--
|
||||||
|
|
||||||
|
Now, only one backslash will do:
|
||||||
|
|
||||||
|
Here are two hyphens: \--
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1f (7 Feb 2007):
|
||||||
|
|
||||||
|
* Fixed an issue with WordPress where manually-entered excerpts, but
|
||||||
|
not the auto-generated ones, would contain nested paragraphs.
|
||||||
|
|
||||||
|
* Fixed an issue introduced in 1.0.1d where headers and blockquotes
|
||||||
|
preceded too closely by a paragraph (not separated by a blank line)
|
||||||
|
where incorrectly put inside the paragraph.
|
||||||
|
|
||||||
|
* Fixed an issue introduced in 1.0.1d in the tokenizeHTML method where
|
||||||
|
two consecutive code spans would be merged into one when together they
|
||||||
|
form a valid tag in a multiline paragraph.
|
||||||
|
|
||||||
|
* Fixed an long-prevailing issue where blank lines in code blocks would
|
||||||
|
be doubled when the code block is in a list item.
|
||||||
|
|
||||||
|
This was due to the list processing functions relying on artificially
|
||||||
|
doubled blank lines to correctly determine when list items should
|
||||||
|
contain block-level content. The list item processing model was thus
|
||||||
|
changed to avoid the need for double blank lines.
|
||||||
|
|
||||||
|
* Fixed an issue with `<% asp-style %>` instructions used as inline
|
||||||
|
content where the opening `<` was encoded as `<`.
|
||||||
|
|
||||||
|
* Fixed a parse error occuring when PHP is configured to accept
|
||||||
|
ASP-style delimiters as boundaries for PHP scripts.
|
||||||
|
|
||||||
|
* Fixed a bug introduced in 1.0.1d where underscores in automatic links
|
||||||
|
got swapped with emphasis tags.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1e (28 Dec 2006)
|
||||||
|
|
||||||
|
* Added support for internationalized domain names for email addresses in
|
||||||
|
automatic link. Improved the speed at which email addresses are converted
|
||||||
|
to entities. Thanks to Milian Wolff for his optimisations.
|
||||||
|
|
||||||
|
* Made deterministic the conversion to entities of email addresses in
|
||||||
|
automatic links. This means that a given email address will always be
|
||||||
|
encoded the same way.
|
||||||
|
|
||||||
|
* PHP Markdown will now use its own function to calculate the length of an
|
||||||
|
UTF-8 string in `detab` when `mb_strlen` is not available instead of
|
||||||
|
giving a fatal error.
|
||||||
|
|
||||||
|
|
||||||
|
1.0.1d (1 Dec 2006)
|
||||||
|
|
||||||
|
* Fixed a bug where inline images always had an empty title attribute. The
|
||||||
|
title attribute is now present only when explicitly defined.
|
||||||
|
|
||||||
|
* Link references definitions can now have an empty title, previously if the
|
||||||
|
title was defined but left empty the link definition was ignored. This can
|
||||||
|
be useful if you want an empty title attribute in images to hide the
|
||||||
|
tooltip in Internet Explorer.
|
||||||
|
|
||||||
|
* Made `detab` aware of UTF-8 characters. UTF-8 multi-byte sequences are now
|
||||||
|
correctly mapped to one character instead of the number of bytes.
|
||||||
|
|
||||||
|
* Fixed a small bug with WordPress where WordPress' default filter `wpautop`
|
||||||
|
was not properly deactivated on comment text, resulting in hard line breaks
|
||||||
|
where Markdown do not prescribes them.
|
||||||
|
|
||||||
|
* Added a `TextileRestrited` method to the textile compatibility mode. There
|
||||||
|
is no restriction however, as Markdown does not have a restricted mode at
|
||||||
|
this point. This should make PHP Markdown work again in the latest
|
||||||
|
versions of TextPattern.
|
||||||
|
|
||||||
|
* Converted PHP Markdown to a object-oriented design.
|
||||||
|
|
||||||
|
* Changed span and block gamut methods so that they loop over a
|
||||||
|
customizable list of methods. This makes subclassing the parser a more
|
||||||
|
interesting option for creating syntax extensions.
|
||||||
|
|
||||||
|
* Also added a "document" gamut loop which can be used to hook document-level
|
||||||
|
methods (like for striping link definitions).
|
||||||
|
|
||||||
|
* Changed all methods which were inserting HTML code so that they now return
|
||||||
|
a hashed representation of the code. New methods `hashSpan` and `hashBlock`
|
||||||
|
are used to hash respectivly span- and block-level generated content. This
|
||||||
|
has a couple of significant effects:
|
||||||
|
|
||||||
|
1. It prevents invalid nesting of Markdown-generated elements which
|
||||||
|
could occur occuring with constructs like `*something [link*][1]`.
|
||||||
|
2. It prevents problems occuring with deeply nested lists on which
|
||||||
|
paragraphs were ill-formed.
|
||||||
|
3. It removes the need to call `hashHTMLBlocks` twice during the the
|
||||||
|
block gamut.
|
||||||
|
|
||||||
|
Hashes are turned back to HTML prior output.
|
||||||
|
|
||||||
|
* Made the block-level HTML parser smarter using a specially-crafted regular
|
||||||
|
expression capable of handling nested tags.
|
||||||
|
|
||||||
|
* Solved backtick issues in tag attributes by rewriting the HTML tokenizer to
|
||||||
|
be aware of code spans. All these lines should work correctly now:
|
||||||
|
|
||||||
|
<span attr='`ticks`'>bar</span>
|
||||||
|
<span attr='``double ticks``'>bar</span>
|
||||||
|
`<test a="` content of attribute `">`
|
||||||
|
|
||||||
|
* Changed the parsing of HTML comments to match simply from `<!--` to `-->`
|
||||||
|
instead using of the more complicated SGML-style rule with paired `--`.
|
||||||
|
This is how most browsers parse comments and how XML defines them too.
|
||||||
|
|
||||||
|
* `<address>` has been added to the list of block-level elements and is now
|
||||||
|
treated as an HTML block instead of being wrapped within paragraph tags.
|
||||||
|
|
||||||
|
* Now only trim trailing newlines from code blocks, instead of trimming
|
||||||
|
all trailing whitespace characters.
|
||||||
|
|
||||||
|
* Fixed bug where this:
|
||||||
|
|
||||||
|
[text](http://m.com "title" )
|
||||||
|
|
||||||
|
wasn't working as expected, because the parser wasn't allowing for spaces
|
||||||
|
before the closing paren.
|
||||||
|
|
||||||
|
* Filthy hack to support markdown='1' in div tags.
|
||||||
|
|
||||||
|
* _DoAutoLinks() now supports the 'dict://' URL scheme.
|
||||||
|
|
||||||
|
* PHP- and ASP-style processor instructions are now protected as
|
||||||
|
raw HTML blocks.
|
||||||
|
|
||||||
|
<? ... ?>
|
||||||
|
<% ... %>
|
||||||
|
|
||||||
|
* Fix for escaped backticks still triggering code spans:
|
||||||
|
|
||||||
|
There are two raw backticks here: \` and here: \`, not a code span
|
||||||
|
|
||||||
|
|
||||||
|
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://michelf.ca/weblog/2005/wordpress-text-flow-vs-markdown/>
|
||||||
|
|
||||||
|
|
||||||
|
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.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
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
PHP Markdown
|
||||||
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Based on Markdown
|
||||||
|
Copyright (c) 2003-2006 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.
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<h2>Popis pluginu</h2>
|
<h2>Popis pluginu</h2>
|
||||||
<p>
|
<p>
|
||||||
Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: <a href="http://www.michelf.com/projects/php-markdown/extra/">http://www.michelf.com/projects/php-markdown/extra/</a>)
|
Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: <a href="http://michelf.ca/projects/php-markdown/extra/">http://michelf.ca/projects/php-markdown/extra/</a>)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Historie verzí (ChangeLog)</h2>
|
<h2>Historie verzí (ChangeLog)</h2>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<h2>Popis pluginu</h2>
|
<h2>Popis pluginu</h2>
|
||||||
<p>
|
<p>
|
||||||
Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: <a href="http://www.michelf.com/projects/php-markdown/extra/">http://www.michelf.com/projects/php-markdown/extra/</a>)
|
Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: <a href="http://michelf.ca/projects/php-markdown/extra/">http://michelf.ca/projects/php-markdown/extra/</a>)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Historie verzí (ChangeLog)</h2>
|
<h2>Historie verzí (ChangeLog)</h2>
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
* EN-Revision: 1.12
|
* EN-Revision: 1.12
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Форматиране на текст: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Форматиране на текст: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Прилага текстово форматиране Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Прилага текстово форматиране Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Форматиране на текст: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Форматиране на текст: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Прилагане на форматиране Markdown Extra върху текста на статиите (Виж: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Прилагане на форматиране Markdown Extra върху текста на статиите (Виж: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Форматиране <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> е позволено');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Форматиране <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> е позволено');
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,6 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,6 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php #
|
<?php #
|
||||||
|
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Textformatierung: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Textformatierung: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Markdown Textformatierung durchführen');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Markdown Textformatierung durchführen');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a>-Formatierung erlaubt');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a>-Formatierung erlaubt');
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,3 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'エントリテキストに Markdown マークアップを適用します。');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'エントリテキストに Markdown マークアップを適用します。');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> 書式を許可します。');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> 書式を許可します。');
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<h2>Popis pluginu</h2>
|
<h2>Popis pluginu</h2>
|
||||||
<p>
|
<p>
|
||||||
Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: <a href="http://www.michelf.com/projects/php-markdown/extra/">http://www.michelf.com/projects/php-markdown/extra/</a>)
|
Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: <a href="http://michelf.ca/projects/php-markdown/extra/">http://michelf.ca/projects/php-markdown/extra/</a>)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Historie verzí (ChangeLog)</h2>
|
<h2>Historie verzí (ChangeLog)</h2>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<h2>Popis pluginu</h2>
|
<h2>Popis pluginu</h2>
|
||||||
<p>
|
<p>
|
||||||
Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: <a href="http://www.michelf.com/projects/php-markdown/extra/">http://www.michelf.com/projects/php-markdown/extra/</a>)
|
Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: <a href="http://michelf.ca/projects/php-markdown/extra/">http://michelf.ca/projects/php-markdown/extra/</a>)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Historie verzí (ChangeLog)</h2>
|
<h2>Historie verzí (ChangeLog)</h2>
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
* EN-Revision: 1.12
|
* EN-Revision: 1.12
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Ôîđěŕňčđŕíĺ íŕ ňĺęńň: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Ôîđěŕňčđŕíĺ íŕ ňĺęńň: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Ďđčëŕăŕ ňĺęńňîâî ôîđěŕňčđŕíĺ Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Ďđčëŕăŕ ňĺęńňîâî ôîđěŕňčđŕíĺ Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Ôîđěŕňčđŕíĺ íŕ ňĺęńň: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Ôîđěŕňčđŕíĺ íŕ ňĺęńň: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Ďđčëŕăŕíĺ íŕ ôîđěŕňčđŕíĺ Markdown Extra âúđőó ňĺęńňŕ íŕ ńňŕňččňĺ (Âčć: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Ďđčëŕăŕíĺ íŕ ôîđěŕňčđŕíĺ Markdown Extra âúđőó ňĺęńňŕ íŕ ńňŕňččňĺ (Âčć: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Ôîđěŕňčđŕíĺ <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> ĺ ďîçâîëĺíî');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Ôîđěŕňčđŕíĺ <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> ĺ ďîçâîëĺíî');
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,6 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,6 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Převádí značky Markdown na HTML v textu příspěvku');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Pøevádí znaèky Markdown Extra na HTML v textu pøíspìvku (Viz.: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Převádí značky Markdown Extra na HTML v textu příspěvku (Viz.: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', 'Formátování <a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> je povoleno');
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php #
|
<?php #
|
||||||
|
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Textformatierung: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Textformatierung: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Markdown Textformatierung durchführen');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Markdown Textformatierung durchführen');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a>-Formatierung erlaubt');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a>-Formatierung erlaubt');
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,14 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
@define('PLUGIN_EVENT_MARKDOWN_NAME', 'Markup: Markdown');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Apply Markdown markup to entry text');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'Apply Markdown markup to entry text');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_NAME', 'Markup: Markdown Extra');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Apply Markdown Extra markup to entry text (See: http://www.michelf.com/projects/php-markdown/extra/)');
|
@define('PLUGIN_EVENT_MARKDOWN_EXTRA_DESC', 'Apply Markdown Extra markup to entry text (See: http://michelf.ca/projects/php-markdown/extra/)');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> format allowed');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> format allowed');
|
||||||
|
|
||||||
?>
|
@define('PLUGIN_EVENT_MARKDOWN_VERSION', 'Markdown Version');
|
||||||
|
@define('PLUGIN_EVENT_MARKDOWN_VERSION_BLABLAH', 'Which version of Markdown do you want to use? (http://michelf.ca/projects/php-markdown/ and http://michelf.ca/blog/2013/php-markdown-lib/)');
|
||||||
|
|
||||||
|
@define('PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_NAME', 'Markup: SmartyPants');
|
||||||
|
@define('PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_DESC', 'Apply SmartyPants (+Typographer) markup to entry text (See: http://michelf.ca/projects/php-smartypants/). Use with lib only!');
|
||||||
|
@define('PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_EXTENDED', '+Typographer');
|
||||||
|
@define('PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_NEVER', 'Disabled');
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,3 @@
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'エントリテキストに Markdown マークアップを適用します。');
|
@define('PLUGIN_EVENT_MARKDOWN_DESC', 'エントリテキストに Markdown マークアップを適用します。');
|
||||||
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> 書式を許可します。');
|
@define('PLUGIN_EVENT_MARKDOWN_TRANSFORM', '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown</a> 書式を許可します。');
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
36
serendipity_event_markdown/lib/License.md
Normal file
36
serendipity_event_markdown/lib/License.md
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
PHP Markdown Lib
|
||||||
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Based on Markdown
|
||||||
|
Copyright (c) 2003-2006 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.
|
10
serendipity_event_markdown/lib/Michelf/Markdown.inc.php
Normal file
10
serendipity_event_markdown/lib/Michelf/Markdown.inc.php
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# Use this file if you cannot use class autoloading. It will include all the
|
||||||
|
# files needed for the Markdown parser.
|
||||||
|
#
|
||||||
|
# Take a look at the PSR-0-compatible class autoloading implementation
|
||||||
|
# in the Readme.php file if you want a simple autoloader setup.
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/MarkdownInterface.php';
|
||||||
|
require_once dirname(__FILE__) . '/Markdown.php';
|
3106
serendipity_event_markdown/lib/Michelf/Markdown.php
Normal file
3106
serendipity_event_markdown/lib/Michelf/Markdown.php
Normal file
File diff suppressed because it is too large
Load diff
11
serendipity_event_markdown/lib/Michelf/MarkdownExtra.inc.php
Normal file
11
serendipity_event_markdown/lib/Michelf/MarkdownExtra.inc.php
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# Use this file if you cannot use class autoloading. It will include all the
|
||||||
|
# files needed for the MarkdownExtra parser.
|
||||||
|
#
|
||||||
|
# Take a look at the PSR-0-compatible class autoloading implementation
|
||||||
|
# in the Readme.php file if you want a simple autoloader setup.
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/MarkdownInterface.php';
|
||||||
|
require_once dirname(__FILE__) . '/Markdown.php';
|
||||||
|
require_once dirname(__FILE__) . '/MarkdownExtra.php';
|
38
serendipity_event_markdown/lib/Michelf/MarkdownExtra.php
Normal file
38
serendipity_event_markdown/lib/Michelf/MarkdownExtra.php
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
#
|
||||||
|
# Markdown Extra - A text-to-HTML conversion tool for web writers
|
||||||
|
#
|
||||||
|
# PHP Markdown Extra
|
||||||
|
# Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
# <http://michelf.com/projects/php-markdown/>
|
||||||
|
#
|
||||||
|
# Original Markdown
|
||||||
|
# Copyright (c) 2004-2006 John Gruber
|
||||||
|
# <http://daringfireball.net/projects/markdown/>
|
||||||
|
#
|
||||||
|
namespace Michelf;
|
||||||
|
|
||||||
|
|
||||||
|
# Just force Michelf/Markdown.php to load. This is needed to load
|
||||||
|
# the temporary implementation class. See below for details.
|
||||||
|
\Michelf\Markdown::MARKDOWNLIB_VERSION;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Markdown Extra Parser Class
|
||||||
|
#
|
||||||
|
# Note: Currently the implementation resides in the temporary class
|
||||||
|
# \Michelf\MarkdownExtra_TmpImpl (in the same file as \Michelf\Markdown).
|
||||||
|
# This makes it easier to propagate the changes between the three different
|
||||||
|
# packaging styles of PHP Markdown. Once this issue is resolved, the
|
||||||
|
# _MarkdownExtra_TmpImpl will disappear and this one will contain the code.
|
||||||
|
#
|
||||||
|
|
||||||
|
class MarkdownExtra extends \Michelf\_MarkdownExtra_TmpImpl {
|
||||||
|
|
||||||
|
### Parser Implementation ###
|
||||||
|
|
||||||
|
# Temporarily, the implemenation is in the _MarkdownExtra_TmpImpl class.
|
||||||
|
# See note above.
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# Use this file if you cannot use class autoloading. It will include all the
|
||||||
|
# files needed for the MarkdownInterface interface.
|
||||||
|
#
|
||||||
|
# Take a look at the PSR-0-compatible class autoloading implementation
|
||||||
|
# in the Readme.php file if you want a simple autoloader setup.
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/MarkdownInterface.php';
|
37
serendipity_event_markdown/lib/Michelf/MarkdownInterface.php
Normal file
37
serendipity_event_markdown/lib/Michelf/MarkdownInterface.php
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
#
|
||||||
|
# Markdown - A text-to-HTML conversion tool for web writers
|
||||||
|
#
|
||||||
|
# PHP Markdown
|
||||||
|
# Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
# <http://michelf.com/projects/php-markdown/>
|
||||||
|
#
|
||||||
|
# Original Markdown
|
||||||
|
# Copyright (c) 2004-2006 John Gruber
|
||||||
|
# <http://daringfireball.net/projects/markdown/>
|
||||||
|
#
|
||||||
|
namespace Michelf;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Markdown Parser Interface
|
||||||
|
#
|
||||||
|
|
||||||
|
interface MarkdownInterface {
|
||||||
|
|
||||||
|
#
|
||||||
|
# Initialize the parser and return the result of its transform method.
|
||||||
|
# This will work fine for derived classes too.
|
||||||
|
#
|
||||||
|
public static function defaultTransform($text);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Main function. Performs some preprocessing on the input text
|
||||||
|
# and pass it through the document gamut.
|
||||||
|
#
|
||||||
|
public function transform($text);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
1031
serendipity_event_markdown/lib/Michelf/SmartyPants.php
Normal file
1031
serendipity_event_markdown/lib/Michelf/SmartyPants.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
#
|
||||||
|
# SmartyPants Typographer - Smart typography for web sites
|
||||||
|
#
|
||||||
|
# PHP SmartyPants & Typographer
|
||||||
|
# Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
# <http://michelf.ca/>
|
||||||
|
#
|
||||||
|
# Original SmartyPants
|
||||||
|
# Copyright (c) 2003-2004 John Gruber
|
||||||
|
# <http://daringfireball.net/>
|
||||||
|
#
|
||||||
|
namespace Michelf;
|
||||||
|
|
||||||
|
|
||||||
|
# Just force Michelf/SmartyPants.php to load. This is needed to load
|
||||||
|
# the temporary implementation class. See below for details.
|
||||||
|
\Michelf\SmartyPants::SMARTYPANTSLIB_VERSION;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# SmartyPants Typographer Parser Class
|
||||||
|
#
|
||||||
|
# Note: Currently the implementation resides in the temporary class
|
||||||
|
# \Michelf\_SmartyPantsTypographer_TmpImpl (in the same file as
|
||||||
|
# \Michelf\SmartyPants). This makes it easier to propagate the changes between
|
||||||
|
# the three different packaging styles of PHP SmartyPants. Once this issue is
|
||||||
|
# resolved, the _SmartyPantsTypographer_TmpImpl class will disappear and this
|
||||||
|
# one will contain the code.
|
||||||
|
#
|
||||||
|
use \Michelf\SmartyPants;
|
||||||
|
|
||||||
|
class SmartyPantsTypographer extends \Michelf\_SmartyPantsTypographer_TmpImpl {
|
||||||
|
|
||||||
|
### Parser Implementation ###
|
||||||
|
|
||||||
|
# Temporarily, the implemenation is in the _SmartyPantsTypographer_TmpImpl
|
||||||
|
# class. See note above.
|
||||||
|
|
||||||
|
}
|
271
serendipity_event_markdown/lib/Readme.md
Normal file
271
serendipity_event_markdown/lib/Readme.md
Normal file
|
@ -0,0 +1,271 @@
|
||||||
|
PHP Markdown
|
||||||
|
============
|
||||||
|
|
||||||
|
PHP Markdown Lib 1.4.0 - 29 Nov 2013
|
||||||
|
|
||||||
|
by Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
|
||||||
|
based on Markdown by John Gruber
|
||||||
|
<http://daringfireball.net/>
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
This is a library package that includes the PHP Markdown parser and its
|
||||||
|
sibling PHP Markdown Extra with additional features.
|
||||||
|
|
||||||
|
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 actually two things: a plain text markup syntax, and a
|
||||||
|
software tool, originally 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.
|
||||||
|
|
||||||
|
* [Full documentation of the Markdown syntax](<http://daringfireball.net/projects/markdown/>)
|
||||||
|
- Daring Fireball (John Gruber)
|
||||||
|
* [Markdown Extra syntax additions](<http://michelf.ca/projects/php-markdown/extra/>)
|
||||||
|
- Michel Fortin
|
||||||
|
|
||||||
|
|
||||||
|
Requirement
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This library package requires PHP 5.3 or later.
|
||||||
|
|
||||||
|
Note: The older plugin/library hybrid package for PHP Markdown and
|
||||||
|
PHP Markdown Extra is still maintained and will work with PHP 4.0.5 and later.
|
||||||
|
|
||||||
|
Before PHP 5.3.7, pcre.backtrack_limit defaults to 100 000, which is too small
|
||||||
|
in many situations. You might need to set it to higher values. Later PHP
|
||||||
|
releases defaults to 1 000 000, which is usually fine.
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
This library package is meant to be used with class autoloading. For autoloading
|
||||||
|
to work, your project needs have setup a PSR-0-compatible autoloader. See the
|
||||||
|
included Readme.php file for a minimal autoloader setup. (If you cannot use
|
||||||
|
autoloading, see below.)
|
||||||
|
|
||||||
|
With class autoloading in place, putting the 'Michelf' folder in your
|
||||||
|
include path should be enough for this to work:
|
||||||
|
|
||||||
|
use \Michelf\Markdown;
|
||||||
|
$my_html = Markdown::defaultTransform($my_text);
|
||||||
|
|
||||||
|
Markdown Extra syntax is also available the same way:
|
||||||
|
|
||||||
|
use \Michelf\MarkdownExtra;
|
||||||
|
$my_html = MarkdownExtra::defaultTransform($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 `transform`
|
||||||
|
function call. This is an example with [PHP SmartyPants][psp]:
|
||||||
|
|
||||||
|
use \Michelf\Markdown, \Michelf\SmartyPants;
|
||||||
|
$my_html = Markdown::defaultTransform($my_text);
|
||||||
|
$my_html = SmartyPants::defaultTransform($my_html);
|
||||||
|
|
||||||
|
All these examples are using the static `defaultTransform` static function
|
||||||
|
found inside the parser class. If you want to customize the parser
|
||||||
|
configuration, you can also instantiate it directly and change some
|
||||||
|
configuration variables:
|
||||||
|
|
||||||
|
use \Michelf\MarkdownExtra;
|
||||||
|
$parser = new MarkdownExtra;
|
||||||
|
$parser->fn_id_prefix = "post22-";
|
||||||
|
$my_html = $parser->transform($my_text);
|
||||||
|
|
||||||
|
To learn more, see the full list of [configuration variables].
|
||||||
|
|
||||||
|
[configuration variables]: http://michelf.ca/projects/php-markdown/configuration/
|
||||||
|
|
||||||
|
|
||||||
|
### Usage without an autoloader
|
||||||
|
|
||||||
|
If you cannot use class autoloading, you can still use `include` or `require`
|
||||||
|
to access the parser. To load the `\Michelf\Markdown` parser, do it this way:
|
||||||
|
|
||||||
|
require_once 'Michelf/Markdown.inc.php';
|
||||||
|
|
||||||
|
Or, if you need the `\Michelf\MarkdownExtra` parser:
|
||||||
|
|
||||||
|
require_once 'Michelf/MarkdownExtra.inc.php';
|
||||||
|
|
||||||
|
While the plain `.php` files depend on autoloading to work correctly, using the
|
||||||
|
`.inc.php` files instead will eagerly load the dependencies that would be
|
||||||
|
loaded on demand if you were using autoloading.
|
||||||
|
|
||||||
|
|
||||||
|
Public API and Versioning Policy
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Version numbers are of the form *major*.*minor*.*patch*.
|
||||||
|
|
||||||
|
The public API of PHP Markdown consist of the two parser classes `Markdown`
|
||||||
|
and `MarkdownExtra`, their constructors, the `transform` and `defaultTransform`
|
||||||
|
functions and their configuration variables. The public API is stable for
|
||||||
|
a given major version number. It might get additions when the minor version
|
||||||
|
number increments.
|
||||||
|
|
||||||
|
**Protected members are not considered public API.** This is unconventional
|
||||||
|
and deserves an explanation. Incrementing the major version number every time
|
||||||
|
the underlying implementation of something changes is going to give
|
||||||
|
nonessential version numbers for the vast majority of people who just use the
|
||||||
|
parser. Protected members are meant to create parser subclasses that behave in
|
||||||
|
different ways. Very few people create parser subclasses. I don't want to
|
||||||
|
discourage it by making everything private, but at the same time I can't
|
||||||
|
guarantee any stable hook between versions if you use protected members.
|
||||||
|
|
||||||
|
**Syntax changes** will increment the minor number for new features, and the
|
||||||
|
patch number for small corrections. A *new feature* is something that needs a
|
||||||
|
change in the syntax documentation. Note that since PHP Markdown Lib includes
|
||||||
|
two parsers, a syntax change for either of them will increment the minor
|
||||||
|
number. Also note that there is nothing perfectly backward-compatible with the
|
||||||
|
Markdown syntax: all inputs are always valid, so new features always replace
|
||||||
|
something that was previously legal, although generally nonsensical to do.
|
||||||
|
|
||||||
|
|
||||||
|
Bugs
|
||||||
|
----
|
||||||
|
|
||||||
|
To file bug reports please send email to:
|
||||||
|
<michel.fortin@michelf.ca>
|
||||||
|
|
||||||
|
Please include with your report: (1) the example input; (2) the output you
|
||||||
|
expected; (3) the output PHP Markdown actually produced.
|
||||||
|
|
||||||
|
If you have a problem where Markdown gives you an empty result, first check
|
||||||
|
that the backtrack limit is not too low by running `php --info | grep pcre`.
|
||||||
|
See Installation and Requirement above for details.
|
||||||
|
|
||||||
|
|
||||||
|
Development and Testing
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Pull requests for fixing bugs are welcome. Proposed new features are
|
||||||
|
going meticulously reviewed -- taking into account backward compatibility,
|
||||||
|
potential side effects, and future extensibility -- before deciding on
|
||||||
|
acceptance or rejection.
|
||||||
|
|
||||||
|
If you make a pull request that includes changes to the parser please add
|
||||||
|
tests for what is being changed to [MDTest][] and make a pull request there
|
||||||
|
too.
|
||||||
|
|
||||||
|
[MDTest]: https://github.com/michelf/mdtest/
|
||||||
|
|
||||||
|
|
||||||
|
Version History
|
||||||
|
---------------
|
||||||
|
|
||||||
|
PHP Markdown Lib 1.4.0 (29 Nov 2013)
|
||||||
|
|
||||||
|
* Added support for the `tel:` URL scheme in automatic links.
|
||||||
|
|
||||||
|
<tel:+1-111-111-1111>
|
||||||
|
|
||||||
|
It gets converted to this (note the `tel:` prefix becomes invisible):
|
||||||
|
|
||||||
|
<a href="tel:+1-111-111-1111">+1-111-111-1111</a>
|
||||||
|
|
||||||
|
* Added backtick fenced code blocks to MarkdownExtra, originally from
|
||||||
|
Github-Flavored Markdown.
|
||||||
|
|
||||||
|
* Added an interface called MarkdownInterface implemented by both
|
||||||
|
the Markdown and MarkdownExtra parsers. You can use the interface if
|
||||||
|
you want to create a mockup parser object for unit testing.
|
||||||
|
|
||||||
|
* For those of you who cannot use class autoloading, you can now
|
||||||
|
include `Michelf/Markdown.inc.php` or `Michelf/MarkdownExtra.inc.php` (note
|
||||||
|
the `.inc.php` extension) to automatically include other files required
|
||||||
|
by the parser.
|
||||||
|
|
||||||
|
|
||||||
|
PHP Markdown Lib 1.3 (11 Apr 2013)
|
||||||
|
|
||||||
|
This is the first release of PHP Markdown Lib. This package requires PHP
|
||||||
|
version 5.3 or later and is designed to work with PSR-0 autoloading and,
|
||||||
|
optionally with Composer. Here is a list of the changes since
|
||||||
|
PHP Markdown Extra 1.2.6:
|
||||||
|
|
||||||
|
* Plugin interface for WordPress and other systems is no longer present in
|
||||||
|
the Lib package. The classic package is still available if you need it:
|
||||||
|
<http://michelf.ca/projects/php-markdown/classic/>
|
||||||
|
|
||||||
|
* Added `public` and `protected` protection attributes, plus a section about
|
||||||
|
what is "public API" and what isn't in the Readme file.
|
||||||
|
|
||||||
|
* Changed HTML output for footnotes: now instead of adding `rel` and `rev`
|
||||||
|
attributes, footnotes links have the class name `footnote-ref` and
|
||||||
|
backlinks `footnote-backref`.
|
||||||
|
|
||||||
|
* Fixed some regular expressions to make PCRE not shout warnings about POSIX
|
||||||
|
collation classes (dependent on your version of PCRE).
|
||||||
|
|
||||||
|
* Added optional class and id attributes to images and links using the same
|
||||||
|
syntax as for headers:
|
||||||
|
|
||||||
|
[link](url){#id .class}
|
||||||
|
![img](url){#id .class}
|
||||||
|
|
||||||
|
It work too for reference-style links and images. In this case you need
|
||||||
|
to put those attributes at the reference definition:
|
||||||
|
|
||||||
|
[link][linkref] or [linkref]
|
||||||
|
![img][linkref]
|
||||||
|
|
||||||
|
[linkref]: url "optional title" {#id .class}
|
||||||
|
|
||||||
|
* Fixed a PHP notice message triggered when some table column separator
|
||||||
|
markers are missing on the separator line below column headers.
|
||||||
|
|
||||||
|
* Fixed a small mistake that could cause the parser to retain an invalid
|
||||||
|
state related to parsing links across multiple runs. This was never
|
||||||
|
observed (that I know of), but it's still worth fixing.
|
||||||
|
|
||||||
|
|
||||||
|
Copyright and License
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
PHP Markdown Lib
|
||||||
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
|
<http://michelf.ca/>
|
||||||
|
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.
|
31
serendipity_event_markdown/lib/Readme.php
Normal file
31
serendipity_event_markdown/lib/Readme.php
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
# This file passes the content of the Readme.md file in the same directory
|
||||||
|
# through the Markdown filter. You can adapt this sample code in any way
|
||||||
|
# you like.
|
||||||
|
|
||||||
|
# Install PSR-0-compatible class autoloader
|
||||||
|
spl_autoload_register(function($class){
|
||||||
|
require preg_replace('{\\\\|_(?!.*\\\\)}', DIRECTORY_SEPARATOR, ltrim($class, '\\')).'.php';
|
||||||
|
});
|
||||||
|
|
||||||
|
# Get Markdown class
|
||||||
|
use \Michelf\Markdown;
|
||||||
|
|
||||||
|
# Read file and pass content through the Markdown parser
|
||||||
|
$text = file_get_contents('Readme.md');
|
||||||
|
$html = Markdown::defaultTransform($text);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>PHP Markdown Lib - Readme</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
# Put HTML content in the document
|
||||||
|
echo $html;
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
31
serendipity_event_markdown/lib/composer.json
Normal file
31
serendipity_event_markdown/lib/composer.json
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"name": "michelf/php-markdown",
|
||||||
|
"type": "library",
|
||||||
|
"description": "PHP Markdown",
|
||||||
|
"homepage": "http://michelf.ca/projects/php-markdown/",
|
||||||
|
"keywords": ["markdown"],
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Michel Fortin",
|
||||||
|
"email": "michel.fortin@michelf.ca",
|
||||||
|
"homepage": "http://michelf.ca/",
|
||||||
|
"role": "Developer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "John Gruber",
|
||||||
|
"homepage": "http://daringfireball.net/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": { "Michelf": "" }
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-lib": "1.4.x-dev"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,17 +2,17 @@
|
||||||
#
|
#
|
||||||
# Markdown - A text-to-HTML conversion tool for web writers
|
# Markdown - A text-to-HTML conversion tool for web writers
|
||||||
#
|
#
|
||||||
# PHP Markdown
|
# PHP Markdown
|
||||||
# Copyright (c) 2004-2012 Michel Fortin
|
# Copyright (c) 2004-2013 Michel Fortin
|
||||||
# <http://michelf.com/projects/php-markdown/>
|
# <http://michelf.ca/projects/php-markdown/>
|
||||||
#
|
#
|
||||||
# Original Markdown
|
# Original Markdown
|
||||||
# Copyright (c) 2004-2006 John Gruber
|
# Copyright (c) 2004-2006 John Gruber
|
||||||
# <http://daringfireball.net/projects/markdown/>
|
# <http://daringfireball.net/projects/markdown/>
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
define( 'MARKDOWN_VERSION', "1.0.1o" ); # Sun 8 Jan 2012
|
define( 'MARKDOWN_VERSION', "1.0.2" ); # 29 Nov 2013
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -60,16 +60,16 @@ function Markdown($text) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Plugin Name: Markdown
|
Plugin Name: Markdown
|
||||||
Plugin URI: http://michelf.com/projects/php-markdown/
|
Plugin URI: http://michelf.ca/projects/php-markdown/
|
||||||
Description: <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://michelf.com/projects/php-markdown/">More...</a>
|
Description: <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://michelf.ca/projects/php-markdown/">More...</a>
|
||||||
Version: 1.0.1o
|
Version: 1.0.2
|
||||||
Author: Michel Fortin
|
Author: Michel Fortin
|
||||||
Author URI: http://michelf.com/
|
Author URI: http://michelf.ca/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (isset($wp_version)) {
|
if (isset($wp_version)) {
|
||||||
# More details about how it works here:
|
# More details about how it works here:
|
||||||
# <http://michelf.com/weblog/2005/wordpress-text-flow-vs-markdown/>
|
# <http://michelf.ca/weblog/2005/wordpress-text-flow-vs-markdown/>
|
||||||
|
|
||||||
# Post content and excerpts
|
# Post content and excerpts
|
||||||
# - Remove WordPress paragraph generator.
|
# - Remove WordPress paragraph generator.
|
||||||
|
@ -147,7 +147,7 @@ function identify_modifier_markdown() {
|
||||||
'authors' => 'Michel Fortin and John Gruber',
|
'authors' => 'Michel Fortin and John Gruber',
|
||||||
'licence' => 'BSD-like',
|
'licence' => 'BSD-like',
|
||||||
'version' => MARKDOWN_VERSION,
|
'version' => MARKDOWN_VERSION,
|
||||||
'help' => '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://michelf.com/projects/php-markdown/">More...</a>'
|
'help' => '<a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a> allows you to write using an easy-to-read, easy-to-write plain text format. Based on the original Perl version by <a href="http://daringfireball.net/">John Gruber</a>. <a href="http://michelf.ca/projects/php-markdown/">More...</a>'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,17 +190,7 @@ if (strcasecmp(substr(__FILE__, -16), "classTextile.php") == 0) {
|
||||||
|
|
||||||
class Markdown_Parser {
|
class Markdown_Parser {
|
||||||
|
|
||||||
# Regex to match balanced [brackets].
|
### Configuration Variables ###
|
||||||
# Needed to insert a maximum bracked depth while converting to PHP.
|
|
||||||
var $nested_brackets_depth = 6;
|
|
||||||
var $nested_brackets_re;
|
|
||||||
|
|
||||||
var $nested_url_parenthesis_depth = 4;
|
|
||||||
var $nested_url_parenthesis_re;
|
|
||||||
|
|
||||||
# Table of hash values for escaped characters:
|
|
||||||
var $escape_chars = '\`*_{}[]()>#+-.!';
|
|
||||||
var $escape_chars_re;
|
|
||||||
|
|
||||||
# Change to ">" for HTML output.
|
# Change to ">" for HTML output.
|
||||||
var $empty_element_suffix = MARKDOWN_EMPTY_ELEMENT_SUFFIX;
|
var $empty_element_suffix = MARKDOWN_EMPTY_ELEMENT_SUFFIX;
|
||||||
|
@ -215,6 +205,21 @@ class Markdown_Parser {
|
||||||
var $predef_titles = array();
|
var $predef_titles = array();
|
||||||
|
|
||||||
|
|
||||||
|
### Parser Implementation ###
|
||||||
|
|
||||||
|
# Regex to match balanced [brackets].
|
||||||
|
# Needed to insert a maximum bracked depth while converting to PHP.
|
||||||
|
var $nested_brackets_depth = 6;
|
||||||
|
var $nested_brackets_re;
|
||||||
|
|
||||||
|
var $nested_url_parenthesis_depth = 4;
|
||||||
|
var $nested_url_parenthesis_re;
|
||||||
|
|
||||||
|
# Table of hash values for escaped characters:
|
||||||
|
var $escape_chars = '\`*_{}[]()>#+-.!';
|
||||||
|
var $escape_chars_re;
|
||||||
|
|
||||||
|
|
||||||
function Markdown_Parser() {
|
function Markdown_Parser() {
|
||||||
#
|
#
|
||||||
# Constructor function. Initialize appropriate member variables.
|
# Constructor function. Initialize appropriate member variables.
|
||||||
|
@ -258,7 +263,7 @@ class Markdown_Parser {
|
||||||
$this->titles = $this->predef_titles;
|
$this->titles = $this->predef_titles;
|
||||||
$this->html_hashes = array();
|
$this->html_hashes = array();
|
||||||
|
|
||||||
$in_anchor = false;
|
$this->in_anchor = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function teardown() {
|
function teardown() {
|
||||||
|
@ -382,7 +387,9 @@ class Markdown_Parser {
|
||||||
#
|
#
|
||||||
$block_tags_a_re = 'ins|del';
|
$block_tags_a_re = 'ins|del';
|
||||||
$block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
|
$block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
|
||||||
'script|noscript|form|fieldset|iframe|math';
|
'script|noscript|form|fieldset|iframe|math|svg|'.
|
||||||
|
'article|section|nav|aside|hgroup|header|footer|'.
|
||||||
|
'figure';
|
||||||
|
|
||||||
# Regular expression for the content of a block tag.
|
# Regular expression for the content of a block tag.
|
||||||
$nested_tags_level = 4;
|
$nested_tags_level = 4;
|
||||||
|
@ -907,7 +914,7 @@ class Markdown_Parser {
|
||||||
if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
|
if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
|
||||||
return $matches[0];
|
return $matches[0];
|
||||||
|
|
||||||
$level = $matches[2][0] == '=' ? 1 : 2;
|
$level = $matches[2]{0} == '=' ? 1 : 2;
|
||||||
$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
|
$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
|
||||||
return "\n" . $this->hashBlock($block) . "\n\n";
|
return "\n" . $this->hashBlock($block) . "\n\n";
|
||||||
}
|
}
|
||||||
|
@ -1203,7 +1210,7 @@ class Markdown_Parser {
|
||||||
} else {
|
} else {
|
||||||
# Other closing marker: close one em or strong and
|
# Other closing marker: close one em or strong and
|
||||||
# change current token state to match the other
|
# change current token state to match the other
|
||||||
$token_stack[0] = str_repeat($token[0], 3-$token_len);
|
$token_stack[0] = str_repeat($token{0}, 3-$token_len);
|
||||||
$tag = $token_len == 2 ? "strong" : "em";
|
$tag = $token_len == 2 ? "strong" : "em";
|
||||||
$span = $text_stack[0];
|
$span = $text_stack[0];
|
||||||
$span = $this->runSpanGamut($span);
|
$span = $this->runSpanGamut($span);
|
||||||
|
@ -1228,7 +1235,7 @@ class Markdown_Parser {
|
||||||
} else {
|
} else {
|
||||||
# Reached opening three-char emphasis marker. Push on token
|
# Reached opening three-char emphasis marker. Push on token
|
||||||
# stack; will be handled by the special condition above.
|
# stack; will be handled by the special condition above.
|
||||||
$em = $token[0];
|
$em = $token{0};
|
||||||
$strong = "$em$em";
|
$strong = "$em$em";
|
||||||
array_unshift($token_stack, $token);
|
array_unshift($token_stack, $token);
|
||||||
array_unshift($text_stack, '');
|
array_unshift($text_stack, '');
|
||||||
|
@ -1440,9 +1447,16 @@ class Markdown_Parser {
|
||||||
>
|
>
|
||||||
}xi',
|
}xi',
|
||||||
array(&$this, '_doAutoLinks_email_callback'), $text);
|
array(&$this, '_doAutoLinks_email_callback'), $text);
|
||||||
|
$text = preg_replace_callback('{<(tel:([^\'">\s]+))>}i',array(&$this, '_doAutoLinks_tel_callback'), $text);
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
function _doAutoLinks_tel_callback($matches) {
|
||||||
|
$url = $this->encodeAttribute($matches[1]);
|
||||||
|
$tel = $this->encodeAttribute($matches[2]);
|
||||||
|
$link = "<a href=\"$url\">$tel</a>";
|
||||||
|
return $this->hashPart($link);
|
||||||
|
}
|
||||||
function _doAutoLinks_url_callback($matches) {
|
function _doAutoLinks_url_callback($matches) {
|
||||||
$url = $this->encodeAttribute($matches[1]);
|
$url = $this->encodeAttribute($matches[1]);
|
||||||
$link = "<a href=\"$url\">$url</a>";
|
$link = "<a href=\"$url\">$url</a>";
|
||||||
|
@ -1515,12 +1529,16 @@ class Markdown_Parser {
|
||||||
|
|
|
|
||||||
<\?.*?\?> | <%.*?%> # processing instruction
|
<\?.*?\?> | <%.*?%> # processing instruction
|
||||||
|
|
|
|
||||||
<[/!$]?[-a-zA-Z0-9:_]+ # regular tags
|
<[!$]?[-a-zA-Z0-9:_]+ # regular tags
|
||||||
(?>
|
(?>
|
||||||
\s
|
\s
|
||||||
(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*
|
(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*
|
||||||
)?
|
)?
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
<[-a-zA-Z0-9:_]+\s*/> # xml-style empty tag
|
||||||
|
|
|
||||||
|
</[-a-zA-Z0-9:_]+\s*> # closing tag
|
||||||
').'
|
').'
|
||||||
)
|
)
|
||||||
}xs';
|
}xs';
|
||||||
|
@ -1557,9 +1575,9 @@ class Markdown_Parser {
|
||||||
# Handle $token provided by parseSpan by determining its nature and
|
# Handle $token provided by parseSpan by determining its nature and
|
||||||
# returning the corresponding value that should replace it.
|
# returning the corresponding value that should replace it.
|
||||||
#
|
#
|
||||||
switch ($token[0]) {
|
switch ($token{0}) {
|
||||||
case "\\":
|
case "\\":
|
||||||
return $this->hashPart("&#". ord($token[1]). ";");
|
return $this->hashPart("&#". ord($token{1}). ";");
|
||||||
case "`":
|
case "`":
|
||||||
# Search for end marker in remaining text.
|
# Search for end marker in remaining text.
|
||||||
if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
|
if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
|
||||||
|
@ -1658,7 +1676,7 @@ Perl by John Gruber.
|
||||||
|
|
||||||
Markdown is a text-to-HTML filter; it translates an easy-to-read /
|
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
|
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
|
is mostly similar to that of plain text email, and supports features such
|
||||||
as headers, *emphasis*, code blocks, blockquotes, and links.
|
as headers, *emphasis*, code blocks, blockquotes, and links.
|
||||||
|
|
||||||
Markdown's syntax is designed not as a generic markup language, but
|
Markdown's syntax is designed not as a generic markup language, but
|
||||||
|
@ -1676,7 +1694,7 @@ Bugs
|
||||||
|
|
||||||
To file bug reports please send email to:
|
To file bug reports please send email to:
|
||||||
|
|
||||||
<michel.fortin@michelf.com>
|
<michel.fortin@michelf.ca>
|
||||||
|
|
||||||
Please include with your report: (1) the example input; (2) the output you
|
Please include with your report: (1) the example input; (2) the output you
|
||||||
expected; (3) the output Markdown actually produced.
|
expected; (3) the output Markdown actually produced.
|
||||||
|
@ -1691,12 +1709,12 @@ See the readme file for detailed release notes for this version.
|
||||||
Copyright and License
|
Copyright and License
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
PHP Markdown
|
PHP Markdown
|
||||||
Copyright (c) 2004-2009 Michel Fortin
|
Copyright (c) 2004-2013 Michel Fortin
|
||||||
<http://michelf.com/>
|
<http://michelf.ca/>
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Based on Markdown
|
Based on Markdown
|
||||||
Copyright (c) 2003-2006 John Gruber
|
Copyright (c) 2003-2006 John Gruber
|
||||||
<http://daringfireball.net/>
|
<http://daringfireball.net/>
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
@ -1729,4 +1747,4 @@ negligence or otherwise) arising in any way out of the use of this
|
||||||
software, even if advised of the possibility of such damage.
|
software, even if advised of the possibility of such damage.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
?>
|
?>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,6 @@
|
||||||
<?php #
|
<?php #
|
||||||
|
|
||||||
|
use \Michelf\Markdown, \Michelf\MarkdownExtra, \Michelf\SmartyPants, \Michelf\SmartyPantsTypographer;
|
||||||
|
|
||||||
if (IN_serendipity !== true) {
|
if (IN_serendipity !== true) {
|
||||||
die ("Don't hack!");
|
die ("Don't hack!");
|
||||||
|
@ -28,9 +29,9 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
$propbag->add('requirements', array(
|
$propbag->add('requirements', array(
|
||||||
'serendipity' => '0.7',
|
'serendipity' => '0.7',
|
||||||
'smarty' => '2.6.7',
|
'smarty' => '2.6.7',
|
||||||
'php' => '4.1.0'
|
'php' => '5.3.0'
|
||||||
));
|
));
|
||||||
$propbag->add('version', '1.18');
|
$propbag->add('version', '1.21');
|
||||||
$propbag->add('cachable_events', array('frontend_display' => true));
|
$propbag->add('cachable_events', array('frontend_display' => true));
|
||||||
$propbag->add('event_hooks', array('frontend_display' => true, 'frontend_comment' => true));
|
$propbag->add('event_hooks', array('frontend_display' => true, 'frontend_comment' => true));
|
||||||
$propbag->add('groups', array('MARKUP'));
|
$propbag->add('groups', array('MARKUP'));
|
||||||
|
@ -59,6 +60,8 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
$conf_array[] = $element['name'];
|
$conf_array[] = $element['name'];
|
||||||
}
|
}
|
||||||
$conf_array[] = 'MARKDOWN_EXTRA';
|
$conf_array[] = 'MARKDOWN_EXTRA';
|
||||||
|
$conf_array[] = 'MARKDOWN_VERSION';
|
||||||
|
$conf_array[] = 'MARKDOWN_SMARTYPANTS';
|
||||||
|
|
||||||
$propbag->add('configuration', $conf_array);
|
$propbag->add('configuration', $conf_array);
|
||||||
}
|
}
|
||||||
|
@ -80,24 +83,48 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
function introspect_config_item($name, &$propbag)
|
function introspect_config_item($name, &$propbag)
|
||||||
{
|
{
|
||||||
switch($name) {
|
switch($name) {
|
||||||
case 'ENTRY_BODY':
|
case 'ENTRY_BODY':
|
||||||
case 'EXTENDED_BODY':
|
case 'EXTENDED_BODY':
|
||||||
case 'COMMENT':
|
case 'COMMENT':
|
||||||
case 'HTML_NUGGET':
|
case 'HTML_NUGGET':
|
||||||
$propbag->add('type', 'boolean');
|
$propbag->add('type', 'boolean');
|
||||||
$propbag->add('name', constant($name));
|
$propbag->add('name', constant($name));
|
||||||
$propbag->add('description', sprintf(APPLY_MARKUP_TO, constant($name)));
|
$propbag->add('description', sprintf(APPLY_MARKUP_TO, constant($name)));
|
||||||
$propbag->add('default', 'true');
|
$propbag->add('default', 'true');
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'MARKDOWN_EXTRA':
|
case 'MARKDOWN_EXTRA':
|
||||||
$propbag->add('type', 'boolean');
|
$propbag->add('type', 'boolean');
|
||||||
$propbag->add('name', PLUGIN_EVENT_MARKDOWN_EXTRA_NAME);
|
$propbag->add('name', PLUGIN_EVENT_MARKDOWN_EXTRA_NAME);
|
||||||
$propbag->add('description', PLUGIN_EVENT_MARKDOWN_EXTRA_DESC);
|
$propbag->add('description', PLUGIN_EVENT_MARKDOWN_EXTRA_DESC);
|
||||||
$propbag->add('default', false);
|
$propbag->add('default', false);
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'MARKDOWN_SMARTYPANTS':
|
||||||
|
$propbag->add('type', 'radio');
|
||||||
|
$propbag->add('name', PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_NAME);
|
||||||
|
$propbag->add('description', PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_DESC);
|
||||||
|
$propbag->add('radio', array(
|
||||||
|
'value' => array(1, 2, 0),
|
||||||
|
'desc' => array(YES, PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_EXTENDED, PLUGIN_EVENT_MARKDOWN_SMARTYPANTS_NEVER)
|
||||||
|
));
|
||||||
|
$propbag->add('default', 0);
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'MARKDOWN_VERSION':
|
||||||
|
$propbag->add('type', 'radio');
|
||||||
|
$propbag->add('name', PLUGIN_EVENT_MARKDOWN_VERSION);
|
||||||
|
$propbag->add('description', PLUGIN_EVENT_MARKDOWN_VERSION_BLABLAH);
|
||||||
|
$propbag->add('radio', array(
|
||||||
|
'value' => array(1, 2),
|
||||||
|
'desc' => array('classic', 'lib'),
|
||||||
|
));
|
||||||
|
$propbag->add('default', 2);
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,10 +132,31 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
function event_hook($event, &$bag, &$eventData, $addData = null) {
|
function event_hook($event, &$bag, &$eventData, $addData = null) {
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
if($this->get_config('MARKDOWN_EXTRA', false)) {
|
$mdsp = $this->get_config('MARKDOWN_SMARTYPANTS');
|
||||||
include_once dirname(__FILE__) . '/markdown_extra.php';
|
$mdv = $this->get_config('MARKDOWN_VERSION');
|
||||||
} else {
|
|
||||||
include_once dirname(__FILE__) . '/markdown.php';
|
switch($mdv) {
|
||||||
|
case 2:
|
||||||
|
if ($this->get_config('MARKDOWN_EXTRA', false)) {
|
||||||
|
require_once dirname(__FILE__) . '/lib/Michelf/MarkdownExtra.inc.php';
|
||||||
|
} else {
|
||||||
|
require_once dirname(__FILE__) . '/lib/Michelf/Markdown.inc.php';
|
||||||
|
}
|
||||||
|
if ($mdsp > 0) {
|
||||||
|
require_once dirname(__FILE__) . '/lib/Michelf/SmartyPants.php';
|
||||||
|
}
|
||||||
|
if ($mdsp == 2) {
|
||||||
|
require_once dirname(__FILE__) . '/lib/Michelf/SmartyPantsTypographer.php';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if (serendipity_db_bool($this->get_config('MARKDOWN_EXTRA', false))) {
|
||||||
|
include_once dirname(__FILE__) . '/markdown_extra.php';
|
||||||
|
} else {
|
||||||
|
include_once dirname(__FILE__) . '/markdown.php';
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hooks = &$bag->get('event_hooks');
|
$hooks = &$bag->get('event_hooks');
|
||||||
|
@ -122,10 +170,16 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
!$eventData['properties']['ep_disable_markup_' . $this->instance] &&
|
!$eventData['properties']['ep_disable_markup_' . $this->instance] &&
|
||||||
!isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) {
|
!isset($serendipity['POST']['properties']['disable_markup_' . $this->instance])) {
|
||||||
$element = $temp['element'];
|
$element = $temp['element'];
|
||||||
$eventData[$element] = str_replace('javascript:', '', Markdown($eventData[$element]));
|
if ($mdv == 2) {
|
||||||
|
$eventData[$element] = str_replace('javascript:', '', Markdown::defaultTransform($eventData[$element]));
|
||||||
|
if ($mdsp == 1) $eventData[$element] = SmartyPants::defaultTransform($eventData[$element]);
|
||||||
|
if ($mdsp == 2) $eventData[$element] = SmartyPantsTypographer::defaultTransform($eventData[$element]);
|
||||||
|
} else {
|
||||||
|
$eventData[$element] = str_replace('javascript:', '', Markdown($eventData[$element]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->setPlaintextBody($eventData);
|
$this->setPlaintextBody($eventData, $mdv, $mdsp);
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -149,16 +203,18 @@ class serendipity_event_markdown extends serendipity_event
|
||||||
* @see http://board.s9y.org/viewtopic.php?f=11&t=18351 Discussion of this feature in the S9y forum.
|
* @see http://board.s9y.org/viewtopic.php?f=11&t=18351 Discussion of this feature in the S9y forum.
|
||||||
*
|
*
|
||||||
* @param array $eventData
|
* @param array $eventData
|
||||||
|
* @param int $version Markdown Classic or Lib default 2
|
||||||
|
* @param int $pants SmartyPants option default 0
|
||||||
*/
|
*/
|
||||||
function setPlaintextBody(array $eventData)
|
function setPlaintextBody(array $eventData, $version=2, $pants=0)
|
||||||
{
|
{
|
||||||
if (isset($GLOBALS['entry'][0]['plaintext_body'])) {
|
if (isset($GLOBALS['entry'][0]['plaintext_body'])) {
|
||||||
$html = Markdown($GLOBALS['entry'][0]['plaintext_body']);
|
$html = ($version == 2) ? Markdown::defaultTransform($GLOBALS['entry'][0]['plaintext_body']) : Markdown($GLOBALS['entry'][0]['plaintext_body']);
|
||||||
$GLOBALS['entry'][0]['plaintext_body'] = trim(strip_tags(str_replace('javascript:', '', $html)));
|
|
||||||
} else {
|
} else {
|
||||||
$html = Markdown(html_entity_decode($eventData['body']));
|
$html = ($version == 2) ? Markdown::defaultTransform(html_entity_decode($eventData['body'])) : Markdown(html_entity_decode($eventData['body']));
|
||||||
$GLOBALS['entry'][0]['plaintext_body'] = trim(strip_tags(str_replace('javascript:', '', $html)));
|
|
||||||
}
|
}
|
||||||
|
if ($pants > 0) $html = ($pants == 2) ? SmartyPantsTypographer::defaultTransform($html) : SmartyPants::defaultTransform($html);
|
||||||
|
$GLOBALS['entry'][0]['plaintext_body'] = trim(strip_tags(str_replace('javascript:', '', $html)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disabled, probably used in later versions
|
/* disabled, probably used in later versions
|
||||||
|
|
Loading…
Reference in a new issue