mirror of
https://github.com/ThunixdotNet/www.git
synced 2026-01-24 07:10:18 +00:00
Beginning of site ver 3.0
This commit is contained in:
11
parsedown-extra-0.7.1/.travis.yml
Normal file
11
parsedown-extra-0.7.1/.travis.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.6
|
||||
- 5.5
|
||||
- 5.4
|
||||
- 5.3
|
||||
|
||||
install:
|
||||
- composer self-update
|
||||
- composer install
|
||||
20
parsedown-extra-0.7.1/LICENSE.txt
Normal file
20
parsedown-extra-0.7.1/LICENSE.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Emanuil Rusev, erusev.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
526
parsedown-extra-0.7.1/ParsedownExtra.php
Normal file
526
parsedown-extra-0.7.1/ParsedownExtra.php
Normal file
@@ -0,0 +1,526 @@
|
||||
<?php
|
||||
|
||||
#
|
||||
#
|
||||
# Parsedown Extra
|
||||
# https://github.com/erusev/parsedown-extra
|
||||
#
|
||||
# (c) Emanuil Rusev
|
||||
# http://erusev.com
|
||||
#
|
||||
# For the full license information, view the LICENSE file that was distributed
|
||||
# with this source code.
|
||||
#
|
||||
#
|
||||
|
||||
class ParsedownExtra extends Parsedown
|
||||
{
|
||||
# ~
|
||||
|
||||
const version = '0.7.0';
|
||||
|
||||
# ~
|
||||
|
||||
function __construct()
|
||||
{
|
||||
if (parent::version < '1.5.0')
|
||||
{
|
||||
throw new Exception('ParsedownExtra requires a later version of Parsedown');
|
||||
}
|
||||
|
||||
$this->BlockTypes[':'] []= 'DefinitionList';
|
||||
$this->BlockTypes['*'] []= 'Abbreviation';
|
||||
|
||||
# identify footnote definitions before reference definitions
|
||||
array_unshift($this->BlockTypes['['], 'Footnote');
|
||||
|
||||
# identify footnote markers before before links
|
||||
array_unshift($this->InlineTypes['['], 'FootnoteMarker');
|
||||
}
|
||||
|
||||
#
|
||||
# ~
|
||||
|
||||
function text($text)
|
||||
{
|
||||
$markup = parent::text($text);
|
||||
|
||||
# merge consecutive dl elements
|
||||
|
||||
$markup = preg_replace('/<\/dl>\s+<dl>\s+/', '', $markup);
|
||||
|
||||
# add footnotes
|
||||
|
||||
if (isset($this->DefinitionData['Footnote']))
|
||||
{
|
||||
$Element = $this->buildFootnoteElement();
|
||||
|
||||
$markup .= "\n" . $this->element($Element);
|
||||
}
|
||||
|
||||
return $markup;
|
||||
}
|
||||
|
||||
#
|
||||
# Blocks
|
||||
#
|
||||
|
||||
#
|
||||
# Abbreviation
|
||||
|
||||
protected function blockAbbreviation($Line)
|
||||
{
|
||||
if (preg_match('/^\*\[(.+?)\]:[ ]*(.+?)[ ]*$/', $Line['text'], $matches))
|
||||
{
|
||||
$this->DefinitionData['Abbreviation'][$matches[1]] = $matches[2];
|
||||
|
||||
$Block = array(
|
||||
'hidden' => true,
|
||||
);
|
||||
|
||||
return $Block;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Footnote
|
||||
|
||||
protected function blockFootnote($Line)
|
||||
{
|
||||
if (preg_match('/^\[\^(.+?)\]:[ ]?(.*)$/', $Line['text'], $matches))
|
||||
{
|
||||
$Block = array(
|
||||
'label' => $matches[1],
|
||||
'text' => $matches[2],
|
||||
'hidden' => true,
|
||||
);
|
||||
|
||||
return $Block;
|
||||
}
|
||||
}
|
||||
|
||||
protected function blockFootnoteContinue($Line, $Block)
|
||||
{
|
||||
if ($Line['text'][0] === '[' and preg_match('/^\[\^(.+?)\]:/', $Line['text']))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isset($Block['interrupted']))
|
||||
{
|
||||
if ($Line['indent'] >= 4)
|
||||
{
|
||||
$Block['text'] .= "\n\n" . $Line['text'];
|
||||
|
||||
return $Block;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$Block['text'] .= "\n" . $Line['text'];
|
||||
|
||||
return $Block;
|
||||
}
|
||||
}
|
||||
|
||||
protected function blockFootnoteComplete($Block)
|
||||
{
|
||||
$this->DefinitionData['Footnote'][$Block['label']] = array(
|
||||
'text' => $Block['text'],
|
||||
'count' => null,
|
||||
'number' => null,
|
||||
);
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
#
|
||||
# Definition List
|
||||
|
||||
protected function blockDefinitionList($Line, $Block)
|
||||
{
|
||||
if ( ! isset($Block) or isset($Block['type']))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$Element = array(
|
||||
'name' => 'dl',
|
||||
'handler' => 'elements',
|
||||
'text' => array(),
|
||||
);
|
||||
|
||||
$terms = explode("\n", $Block['element']['text']);
|
||||
|
||||
foreach ($terms as $term)
|
||||
{
|
||||
$Element['text'] []= array(
|
||||
'name' => 'dt',
|
||||
'handler' => 'line',
|
||||
'text' => $term,
|
||||
);
|
||||
}
|
||||
|
||||
$Block['element'] = $Element;
|
||||
|
||||
$Block = $this->addDdElement($Line, $Block);
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
protected function blockDefinitionListContinue($Line, array $Block)
|
||||
{
|
||||
if ($Line['text'][0] === ':')
|
||||
{
|
||||
$Block = $this->addDdElement($Line, $Block);
|
||||
|
||||
return $Block;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($Block['interrupted']) and $Line['indent'] === 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isset($Block['interrupted']))
|
||||
{
|
||||
$Block['dd']['handler'] = 'text';
|
||||
$Block['dd']['text'] .= "\n\n";
|
||||
|
||||
unset($Block['interrupted']);
|
||||
}
|
||||
|
||||
$text = substr($Line['body'], min($Line['indent'], 4));
|
||||
|
||||
$Block['dd']['text'] .= "\n" . $text;
|
||||
|
||||
return $Block;
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Header
|
||||
|
||||
protected function blockHeader($Line)
|
||||
{
|
||||
$Block = parent::blockHeader($Line);
|
||||
|
||||
if (preg_match('/[ #]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
|
||||
{
|
||||
$attributeString = $matches[1][0];
|
||||
|
||||
$Block['element']['attributes'] = $this->parseAttributeData($attributeString);
|
||||
|
||||
$Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
|
||||
}
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
#
|
||||
# Markup
|
||||
|
||||
protected function blockMarkupComplete($Block)
|
||||
{
|
||||
if ( ! isset($Block['void']))
|
||||
{
|
||||
$Block['markup'] = $this->processTag($Block['markup']);
|
||||
}
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
#
|
||||
# Setext
|
||||
|
||||
protected function blockSetextHeader($Line, array $Block = null)
|
||||
{
|
||||
$Block = parent::blockSetextHeader($Line, $Block);
|
||||
|
||||
if (preg_match('/[ ]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
|
||||
{
|
||||
$attributeString = $matches[1][0];
|
||||
|
||||
$Block['element']['attributes'] = $this->parseAttributeData($attributeString);
|
||||
|
||||
$Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
|
||||
}
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
#
|
||||
# Inline Elements
|
||||
#
|
||||
|
||||
#
|
||||
# Footnote Marker
|
||||
|
||||
protected function inlineFootnoteMarker($Excerpt)
|
||||
{
|
||||
if (preg_match('/^\[\^(.+?)\]/', $Excerpt['text'], $matches))
|
||||
{
|
||||
$name = $matches[1];
|
||||
|
||||
if ( ! isset($this->DefinitionData['Footnote'][$name]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->DefinitionData['Footnote'][$name]['count'] ++;
|
||||
|
||||
if ( ! isset($this->DefinitionData['Footnote'][$name]['number']))
|
||||
{
|
||||
$this->DefinitionData['Footnote'][$name]['number'] = ++ $this->footnoteCount; # » &
|
||||
}
|
||||
|
||||
$Element = array(
|
||||
'name' => 'sup',
|
||||
'attributes' => array('id' => 'fnref'.$this->DefinitionData['Footnote'][$name]['count'].':'.$name),
|
||||
'handler' => 'element',
|
||||
'text' => array(
|
||||
'name' => 'a',
|
||||
'attributes' => array('href' => '#fn:'.$name, 'class' => 'footnote-ref'),
|
||||
'text' => $this->DefinitionData['Footnote'][$name]['number'],
|
||||
),
|
||||
);
|
||||
|
||||
return array(
|
||||
'extent' => strlen($matches[0]),
|
||||
'element' => $Element,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private $footnoteCount = 0;
|
||||
|
||||
#
|
||||
# Link
|
||||
|
||||
protected function inlineLink($Excerpt)
|
||||
{
|
||||
$Link = parent::inlineLink($Excerpt);
|
||||
|
||||
$remainder = substr($Excerpt['text'], $Link['extent']);
|
||||
|
||||
if (preg_match('/^[ ]*{('.$this->regexAttribute.'+)}/', $remainder, $matches))
|
||||
{
|
||||
$Link['element']['attributes'] += $this->parseAttributeData($matches[1]);
|
||||
|
||||
$Link['extent'] += strlen($matches[0]);
|
||||
}
|
||||
|
||||
return $Link;
|
||||
}
|
||||
|
||||
#
|
||||
# ~
|
||||
#
|
||||
|
||||
protected function unmarkedText($text)
|
||||
{
|
||||
$text = parent::unmarkedText($text);
|
||||
|
||||
if (isset($this->DefinitionData['Abbreviation']))
|
||||
{
|
||||
foreach ($this->DefinitionData['Abbreviation'] as $abbreviation => $meaning)
|
||||
{
|
||||
$pattern = '/\b'.preg_quote($abbreviation, '/').'\b/';
|
||||
|
||||
$text = preg_replace($pattern, '<abbr title="'.$meaning.'">'.$abbreviation.'</abbr>', $text);
|
||||
}
|
||||
}
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
#
|
||||
# Util Methods
|
||||
#
|
||||
|
||||
protected function addDdElement(array $Line, array $Block)
|
||||
{
|
||||
$text = substr($Line['text'], 1);
|
||||
$text = trim($text);
|
||||
|
||||
unset($Block['dd']);
|
||||
|
||||
$Block['dd'] = array(
|
||||
'name' => 'dd',
|
||||
'handler' => 'line',
|
||||
'text' => $text,
|
||||
);
|
||||
|
||||
if (isset($Block['interrupted']))
|
||||
{
|
||||
$Block['dd']['handler'] = 'text';
|
||||
|
||||
unset($Block['interrupted']);
|
||||
}
|
||||
|
||||
$Block['element']['text'] []= & $Block['dd'];
|
||||
|
||||
return $Block;
|
||||
}
|
||||
|
||||
protected function buildFootnoteElement()
|
||||
{
|
||||
$Element = array(
|
||||
'name' => 'div',
|
||||
'attributes' => array('class' => 'footnotes'),
|
||||
'handler' => 'elements',
|
||||
'text' => array(
|
||||
array(
|
||||
'name' => 'hr',
|
||||
),
|
||||
array(
|
||||
'name' => 'ol',
|
||||
'handler' => 'elements',
|
||||
'text' => array(),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
uasort($this->DefinitionData['Footnote'], 'self::sortFootnotes');
|
||||
|
||||
foreach ($this->DefinitionData['Footnote'] as $definitionId => $DefinitionData)
|
||||
{
|
||||
if ( ! isset($DefinitionData['number']))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$text = $DefinitionData['text'];
|
||||
|
||||
$text = parent::text($text);
|
||||
|
||||
$numbers = range(1, $DefinitionData['count']);
|
||||
|
||||
$backLinksMarkup = '';
|
||||
|
||||
foreach ($numbers as $number)
|
||||
{
|
||||
$backLinksMarkup .= ' <a href="#fnref'.$number.':'.$definitionId.'" rev="footnote" class="footnote-backref">↩</a>';
|
||||
}
|
||||
|
||||
$backLinksMarkup = substr($backLinksMarkup, 1);
|
||||
|
||||
if (substr($text, - 4) === '</p>')
|
||||
{
|
||||
$backLinksMarkup = ' '.$backLinksMarkup;
|
||||
|
||||
$text = substr_replace($text, $backLinksMarkup.'</p>', - 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
$text .= "\n".'<p>'.$backLinksMarkup.'</p>';
|
||||
}
|
||||
|
||||
$Element['text'][1]['text'] []= array(
|
||||
'name' => 'li',
|
||||
'attributes' => array('id' => 'fn:'.$definitionId),
|
||||
'text' => "\n".$text."\n",
|
||||
);
|
||||
}
|
||||
|
||||
return $Element;
|
||||
}
|
||||
|
||||
# ~
|
||||
|
||||
protected function parseAttributeData($attributeString)
|
||||
{
|
||||
$Data = array();
|
||||
|
||||
$attributes = preg_split('/[ ]+/', $attributeString, - 1, PREG_SPLIT_NO_EMPTY);
|
||||
|
||||
foreach ($attributes as $attribute)
|
||||
{
|
||||
if ($attribute[0] === '#')
|
||||
{
|
||||
$Data['id'] = substr($attribute, 1);
|
||||
}
|
||||
else # "."
|
||||
{
|
||||
$classes []= substr($attribute, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($classes))
|
||||
{
|
||||
$Data['class'] = implode(' ', $classes);
|
||||
}
|
||||
|
||||
return $Data;
|
||||
}
|
||||
|
||||
# ~
|
||||
|
||||
protected function processTag($elementMarkup) # recursive
|
||||
{
|
||||
# http://stackoverflow.com/q/1148928/200145
|
||||
libxml_use_internal_errors(true);
|
||||
|
||||
$DOMDocument = new DOMDocument;
|
||||
|
||||
# http://stackoverflow.com/q/11309194/200145
|
||||
$elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8');
|
||||
|
||||
# http://stackoverflow.com/q/4879946/200145
|
||||
$DOMDocument->loadHTML($elementMarkup);
|
||||
$DOMDocument->removeChild($DOMDocument->doctype);
|
||||
$DOMDocument->replaceChild($DOMDocument->firstChild->firstChild->firstChild, $DOMDocument->firstChild);
|
||||
|
||||
$elementText = '';
|
||||
|
||||
if ($DOMDocument->documentElement->getAttribute('markdown') === '1')
|
||||
{
|
||||
foreach ($DOMDocument->documentElement->childNodes as $Node)
|
||||
{
|
||||
$elementText .= $DOMDocument->saveHTML($Node);
|
||||
}
|
||||
|
||||
$DOMDocument->documentElement->removeAttribute('markdown');
|
||||
|
||||
$elementText = "\n".$this->text($elementText)."\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ($DOMDocument->documentElement->childNodes as $Node)
|
||||
{
|
||||
$nodeMarkup = $DOMDocument->saveHTML($Node);
|
||||
|
||||
if ($Node instanceof DOMElement and ! in_array($Node->nodeName, $this->textLevelElements))
|
||||
{
|
||||
$elementText .= $this->processTag($nodeMarkup);
|
||||
}
|
||||
else
|
||||
{
|
||||
$elementText .= $nodeMarkup;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# because we don't want for markup to get encoded
|
||||
$DOMDocument->documentElement->nodeValue = 'placeholder\x1A';
|
||||
|
||||
$markup = $DOMDocument->saveHTML($DOMDocument->documentElement);
|
||||
$markup = str_replace('placeholder\x1A', $elementText, $markup);
|
||||
|
||||
return $markup;
|
||||
}
|
||||
|
||||
# ~
|
||||
|
||||
protected function sortFootnotes($A, $B) # callback
|
||||
{
|
||||
return $A['number'] - $B['number'];
|
||||
}
|
||||
|
||||
#
|
||||
# Fields
|
||||
#
|
||||
|
||||
protected $regexAttribute = '(?:[#.][-\w]+[ ]*)';
|
||||
}
|
||||
31
parsedown-extra-0.7.1/README.md
Normal file
31
parsedown-extra-0.7.1/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
> You might also like [Caret](http://caret.io?ref=parsedown) - our Markdown editor for the Desktop.
|
||||
|
||||
## Parsedown Extra
|
||||
|
||||
[](https://travis-ci.org/erusev/parsedown-extra)
|
||||
|
||||
An extension of [Parsedown](http://parsedown.org) that adds support for [Markdown Extra](https://michelf.ca/projects/php-markdown/extra/).
|
||||
|
||||
[See Demo](http://parsedown.org/extra/)
|
||||
|
||||
### Installation
|
||||
|
||||
Include both `Parsedown.php` and `ParsedownExtra.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown-extra).
|
||||
|
||||
### Example
|
||||
|
||||
``` php
|
||||
$Extra = new ParsedownExtra();
|
||||
|
||||
echo $Extra->text('# Header {.sth}'); # prints: <h1 class="sth">Header</h1>
|
||||
```
|
||||
|
||||
### Questions
|
||||
|
||||
**Who uses Parsedown Extra?**
|
||||
|
||||
[October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [Grav CMS](http://getgrav.org/), [Statamic CMS](http://www.statamic.com/) and [more](https://www.versioneye.com/php/erusev:parsedown-extra/references).
|
||||
|
||||
**How can I help?**
|
||||
|
||||
Use it, star it, share it and in case you feel generous, [donate some money](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
|
||||
21
parsedown-extra-0.7.1/composer.json
Normal file
21
parsedown-extra-0.7.1/composer.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "erusev/parsedown-extra",
|
||||
"description": "An extension of Parsedown that adds support for Markdown Extra.",
|
||||
"keywords": ["markdown", "markdown extra", "parser", "parsedown"],
|
||||
"homepage": "https://github.com/erusev/parsedown-extra",
|
||||
"type": "library",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Emanuil Rusev",
|
||||
"email": "hello@erusev.com",
|
||||
"homepage": "http://erusev.com"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"erusev/parsedown": "~1.4"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {"ParsedownExtra": ""}
|
||||
}
|
||||
}
|
||||
8
parsedown-extra-0.7.1/phpunit.xml.dist
Normal file
8
parsedown-extra-0.7.1/phpunit.xml.dist
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit bootstrap="test/bootstrap.php" colors="true">
|
||||
<testsuites>
|
||||
<testsuite>
|
||||
<file>test/ParsedownExtraTest.php</file>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
||||
20
parsedown-extra-0.7.1/test/ParsedownExtraTest.php
Normal file
20
parsedown-extra-0.7.1/test/ParsedownExtraTest.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
class ParsedownExtraTest extends ParsedownTest
|
||||
{
|
||||
protected function initDirs()
|
||||
{
|
||||
$dirs = parent::initDirs();
|
||||
|
||||
$dirs []= dirname(__FILE__).'/data/';
|
||||
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
protected function initParsedown()
|
||||
{
|
||||
$Parsedown = new ParsedownExtra();
|
||||
|
||||
return $Parsedown;
|
||||
}
|
||||
}
|
||||
10
parsedown-extra-0.7.1/test/bootstrap.php
Normal file
10
parsedown-extra-0.7.1/test/bootstrap.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
$dir = file_exists('../parsedown/')
|
||||
? '../parsedown/' # child
|
||||
: 'vendor/erusev/parsedown/'; # parent
|
||||
|
||||
include $dir . 'Parsedown.php';
|
||||
include $dir . 'test/ParsedownTest.php';
|
||||
|
||||
include 'ParsedownExtra.php';
|
||||
3
parsedown-extra-0.7.1/test/data/abbreviation.html
Normal file
3
parsedown-extra-0.7.1/test/data/abbreviation.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
|
||||
is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.
|
||||
The abbreviation <abbr title="Markup Language">ML</abbr> is contained in the abbreviation <abbr title="Hyper Text Markup Language">HTML</abbr>.</p>
|
||||
7
parsedown-extra-0.7.1/test/data/abbreviation.md
Normal file
7
parsedown-extra-0.7.1/test/data/abbreviation.md
Normal file
@@ -0,0 +1,7 @@
|
||||
The HTML specification
|
||||
is maintained by the W3C.
|
||||
The abbreviation ML is contained in the abbreviation HTML.
|
||||
|
||||
*[HTML]: Hyper Text Markup Language
|
||||
*[W3C]: World Wide Web Consortium
|
||||
*[ML]: Markup Language
|
||||
18
parsedown-extra-0.7.1/test/data/compound_footnote.html
Normal file
18
parsedown-extra-0.7.1/test/data/compound_footnote.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<p>footnote <sup id="fnref1:1"><a href="#fn:1" class="footnote-ref">1</a></sup> and another one <sup id="fnref1:2"><a href="#fn:2" class="footnote-ref">2</a></sup></p>
|
||||
<div class="footnotes">
|
||||
<hr />
|
||||
<ol>
|
||||
<li id="fn:1">
|
||||
<p>line 1
|
||||
line 2</p>
|
||||
<blockquote>
|
||||
<p>quote</p>
|
||||
</blockquote>
|
||||
<p>another paragraph <a href="#fnref1:1" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
<li id="fn:2">
|
||||
<p>paragraph</p>
|
||||
<p>another paragraph <a href="#fnref1:2" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
14
parsedown-extra-0.7.1/test/data/compound_footnote.md
Normal file
14
parsedown-extra-0.7.1/test/data/compound_footnote.md
Normal file
@@ -0,0 +1,14 @@
|
||||
footnote [^1] and another one [^2]
|
||||
|
||||
[^1]: line 1
|
||||
line 2
|
||||
|
||||
> quote
|
||||
|
||||
another paragraph
|
||||
|
||||
[^2]:
|
||||
paragraph
|
||||
|
||||
another paragraph
|
||||
|
||||
17
parsedown-extra-0.7.1/test/data/definition_list.html
Normal file
17
parsedown-extra-0.7.1/test/data/definition_list.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<dl>
|
||||
<dt>Term 1</dt>
|
||||
<dd>one</dd>
|
||||
<dd>two
|
||||
extra line</dd>
|
||||
<dt>Term 2</dt>
|
||||
<dd><p>lazy
|
||||
line</p></dd>
|
||||
<dd><p>multiple</p>
|
||||
<p>paragraphs</p></dd>
|
||||
<dd><p>nested</p>
|
||||
<pre><code>code block</code></pre>
|
||||
<blockquote>
|
||||
<p>quote
|
||||
block</p>
|
||||
</blockquote></dd>
|
||||
</dl>
|
||||
20
parsedown-extra-0.7.1/test/data/definition_list.md
Normal file
20
parsedown-extra-0.7.1/test/data/definition_list.md
Normal file
@@ -0,0 +1,20 @@
|
||||
Term 1
|
||||
: one
|
||||
: two
|
||||
extra line
|
||||
|
||||
Term 2
|
||||
|
||||
: lazy
|
||||
line
|
||||
|
||||
: multiple
|
||||
|
||||
paragraphs
|
||||
|
||||
: nested
|
||||
|
||||
code block
|
||||
|
||||
> quote
|
||||
> block
|
||||
20
parsedown-extra-0.7.1/test/data/footnote.html
Normal file
20
parsedown-extra-0.7.1/test/data/footnote.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<p>first <sup id="fnref1:1"><a href="#fn:1" class="footnote-ref">1</a></sup> second <sup id="fnref1:2"><a href="#fn:2" class="footnote-ref">2</a></sup>.</p>
|
||||
<p>first <sup id="fnref1:a"><a href="#fn:a" class="footnote-ref">3</a></sup> second <sup id="fnref1:b"><a href="#fn:b" class="footnote-ref">4</a></sup>.</p>
|
||||
<p>second time <sup id="fnref2:1"><a href="#fn:1" class="footnote-ref">1</a></sup></p>
|
||||
<div class="footnotes">
|
||||
<hr />
|
||||
<ol>
|
||||
<li id="fn:1">
|
||||
<p>one <a href="#fnref1:1" rev="footnote" class="footnote-backref">↩</a> <a href="#fnref2:1" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
<li id="fn:2">
|
||||
<p>two <a href="#fnref1:2" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
<li id="fn:a">
|
||||
<p>one <a href="#fnref1:a" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
<li id="fn:b">
|
||||
<p>two <a href="#fnref1:b" rev="footnote" class="footnote-backref">↩</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
11
parsedown-extra-0.7.1/test/data/footnote.md
Normal file
11
parsedown-extra-0.7.1/test/data/footnote.md
Normal file
@@ -0,0 +1,11 @@
|
||||
first [^1] second [^2].
|
||||
|
||||
[^1]: one
|
||||
[^2]: two
|
||||
|
||||
first [^a] second [^b].
|
||||
|
||||
[^a]: one
|
||||
[^b]: two
|
||||
|
||||
second time [^1]
|
||||
25
parsedown-extra-0.7.1/test/data/markdown_inside_markup.html
Normal file
25
parsedown-extra-0.7.1/test/data/markdown_inside_markup.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<div class="example">
|
||||
<p><em>markdown</em></p>
|
||||
<p>This is another paragraph. It contains <em>inline markup</em>.</p>
|
||||
<div>
|
||||
_no markdown_
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div>
|
||||
<p><em>markdown</em></p>
|
||||
<div>
|
||||
<p><em>markdown</em></p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div>
|
||||
_no markdown_
|
||||
<div>
|
||||
<p><em>markdown</em></p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div markdown="0">
|
||||
_no markdown_
|
||||
</div>
|
||||
32
parsedown-extra-0.7.1/test/data/markdown_inside_markup.md
Normal file
32
parsedown-extra-0.7.1/test/data/markdown_inside_markup.md
Normal file
@@ -0,0 +1,32 @@
|
||||
<div class="example" markdown="1">
|
||||
_markdown_
|
||||
|
||||
This is another paragraph. It contains <em>inline markup</em>.
|
||||
<div>
|
||||
_no markdown_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<div markdown="1">
|
||||
_markdown_
|
||||
<div markdown="1">
|
||||
_markdown_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<div>
|
||||
_no markdown_
|
||||
<div markdown="1">
|
||||
_markdown_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<div markdown="0">
|
||||
_no markdown_
|
||||
</div>
|
||||
6
parsedown-extra-0.7.1/test/data/special_attributes.html
Normal file
6
parsedown-extra-0.7.1/test/data/special_attributes.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<h1 id="header1">Header 1</h1>
|
||||
<h2 id="header2">Header 2</h2>
|
||||
<h2 class="main">The Site</h2>
|
||||
<h2 id="the-site" class="main shine">The Site</h2>
|
||||
<p><a href="http://parsedown.org" id="link" class="primary upper-case">link</a></p>
|
||||
<p><img src="/md.png" alt="logo" id="logo" class="big" /></p>
|
||||
12
parsedown-extra-0.7.1/test/data/special_attributes.md
Normal file
12
parsedown-extra-0.7.1/test/data/special_attributes.md
Normal file
@@ -0,0 +1,12 @@
|
||||
Header 1 {#header1}
|
||||
========
|
||||
|
||||
## Header 2 ## {#header2}
|
||||
|
||||
## The Site ## {.main}
|
||||
|
||||
## The Site ## {.main .shine #the-site}
|
||||
|
||||
[link](http://parsedown.org) {.primary #link .upper-case}
|
||||
|
||||
 {#logo .big}
|
||||
Reference in New Issue
Block a user