From 950e65ec51775151aab1e12fa10d0244375d4b1e Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 11:12:30 -0600 Subject: [PATCH 01/17] add fixed tests to /new --- test/new/def_blocks.html | 4 +- test/new/links.sanitize.html | 5 ++ test/new/links.sanitize.text | 9 +++ test/new/links_reference_style.html | 62 ++++++++++++++ test/new/links_reference_style.text | 81 +++++++++++++++++++ test/new/mangle_xss.sanatize.nomangle.html | 3 + test/new/mangle_xss.sanatize.nomangle.text | 3 + ...=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html | 35 ++++++++ ...=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text | 27 +++++++ test/new/text.smartypants.html | 2 +- test/new/text.smartypants.text | 2 +- test/new/toplevel_paragraphs.gfm.html | 30 +++---- test/new/toplevel_paragraphs.gfm.text | 31 +++---- test/new/uppercase_hex.sanitize.html | 2 + test/new/uppercase_hex.sanitize.text | 2 + 15 files changed, 265 insertions(+), 33 deletions(-) create mode 100644 test/new/links.sanitize.html create mode 100644 test/new/links.sanitize.text create mode 100644 test/new/links_reference_style.html create mode 100644 test/new/links_reference_style.text create mode 100644 test/new/mangle_xss.sanatize.nomangle.html create mode 100644 test/new/mangle_xss.sanatize.nomangle.text create mode 100644 test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html create mode 100644 test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text create mode 100644 test/new/uppercase_hex.sanitize.html create mode 100644 test/new/uppercase_hex.sanitize.text diff --git a/test/new/def_blocks.html b/test/new/def_blocks.html index 14edc97a41..ec0d11934d 100644 --- a/test/new/def_blocks.html +++ b/test/new/def_blocks.html @@ -6,7 +6,8 @@
-

hello

+

hello +[2]: hello

@@ -24,5 +25,6 @@

foo bar +[1]: foo bar

diff --git a/test/new/links.sanitize.html b/test/new/links.sanitize.html new file mode 100644 index 0000000000..58d6f5ea38 --- /dev/null +++ b/test/new/links.sanitize.html @@ -0,0 +1,5 @@ +

+

+

+

+

\ No newline at end of file diff --git a/test/new/links.sanitize.text b/test/new/links.sanitize.text new file mode 100644 index 0000000000..ba5d09fed7 --- /dev/null +++ b/test/new/links.sanitize.text @@ -0,0 +1,9 @@ +[URL](javascript:alert) + +[URL](vbscript:alert) + +[URL](javascript:alert(1)) + +[URL](javascript:document;alert(1)) + +[URL](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) \ No newline at end of file diff --git a/test/new/links_reference_style.html b/test/new/links_reference_style.html new file mode 100644 index 0000000000..2ec1b41f21 --- /dev/null +++ b/test/new/links_reference_style.html @@ -0,0 +1,62 @@ +

Foo bar.

+ +

Foo bar.

+ +

Foo bar.

+ +

With embedded [brackets].

+ +

Indented once.

+ +

Indented twice.

+ +

Indented thrice.

+ +

Indented [four][] times.

+ +
[four]: /url
+
+ +
+ +

this should work

+ +

So should this.

+ +

And this.

+ +

And this.

+ +

And this.

+ +

But not [that] [].

+ +

Nor [that][].

+ +

Nor [that].

+ +

[Something in brackets like this should work]

+ +

[Same with this.]

+ +

In this case, this points to something else.

+ +

Backslashing should suppress [this] and [this].

+ +

A link reference definition cannot interrupt a paragraph. +[bar]: /baz

+

[bar]

+ +

However, it can directly follow other block elements, such as headings

+

Foo

+
+

bar

+
+ +
+ +

Here's one where the link +breaks across lines.

+ +

Here's another where the link +breaks across lines, but with a line-ending space.

diff --git a/test/new/links_reference_style.text b/test/new/links_reference_style.text new file mode 100644 index 0000000000..39aa93bbae --- /dev/null +++ b/test/new/links_reference_style.text @@ -0,0 +1,81 @@ +Foo [bar] [1]. + +Foo [bar][1]. + +Foo [bar] +[1]. + +[1]: /url/ "Title" + + +With [embedded [brackets]] [b]. + + +Indented [once][]. + +Indented [twice][]. + +Indented [thrice][]. + +Indented [four][] times. + + [once]: /url + + [twice]: /url + + [thrice]: /url + + [four]: /url + + +[b]: /url/ + +* * * + +[this] [this] should work + +So should [this][this]. + +And [this] []. + +And [this][]. + +And [this]. + +But not [that] []. + +Nor [that][]. + +Nor [that]. + +[Something in brackets like [this][] should work] + +[Same with [this].] + +In this case, [this](/somethingelse/) points to something else. + +Backslashing should suppress \[this] and [this\]. + +[this]: foo + +A link reference definition cannot interrupt a paragraph. +[bar]: /baz + +[bar] + +However, it can directly follow other block elements, such as headings + +# [Foo] +[foo]: /url +> bar + +* * * + +Here's one where the [link +breaks] across lines. + +Here's another where the [link +breaks] across lines, but with a line-ending space. + + +[link breaks]: /url/ diff --git a/test/new/mangle_xss.sanatize.nomangle.html b/test/new/mangle_xss.sanatize.nomangle.html new file mode 100644 index 0000000000..9f87f09a43 --- /dev/null +++ b/test/new/mangle_xss.sanatize.nomangle.html @@ -0,0 +1,3 @@ +

<svg/onload="alert(1)"//@x

+ +

bar"onclick="alert('XSS')"@foo

diff --git a/test/new/mangle_xss.sanatize.nomangle.text b/test/new/mangle_xss.sanatize.nomangle.text new file mode 100644 index 0000000000..c44503da00 --- /dev/null +++ b/test/new/mangle_xss.sanatize.nomangle.text @@ -0,0 +1,3 @@ +< + + diff --git a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html b/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html new file mode 100644 index 0000000000..ee7f3bff0e --- /dev/null +++ b/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html @@ -0,0 +1,35 @@ +

Absolutization of RFC 3986 URIs

+ +

Absolute URI

+ +

section 4.3

+ +

Network-path reference

+ +

section 4.2

+ +

Absolute path

+ +

section 4.2

+ +

Relative path

+ +

section 4.2

+ +

Dot-relative path

+ +

section 3.3

+ +

section 3.3

+ +

Same-document query

+ +

section 4.4

+ +

Same-document fragment

+ +

section 4.4

+ +

Empty

+ +

section 4.2

diff --git a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text b/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text new file mode 100644 index 0000000000..56f81820b1 --- /dev/null +++ b/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text @@ -0,0 +1,27 @@ +# Absolutization of RFC 3986 URIs + +## Absolute URI +[![section 4.3](http://example.com/logo)](http://example.com/) + +## Network-path reference +[![section 4.2](//example.com/logo)](//example.com/) + +## Absolute path +[![section 4.2](/path/to/img)](/path/to/content) + +## Relative path +[![section 4.2](img)](content) + +## Dot-relative path +[![section 3.3](./img)](./content) + +[![section 3.3](../img)](../content) + +## Same-document query +[![section 4.4](?type=image)](?) + +## Same-document fragment +[![section 4.4](#img)](#) + +## Empty +[section 4.2]() diff --git a/test/new/text.smartypants.html b/test/new/text.smartypants.html index 22997c4c12..33718eeac9 100644 --- a/test/new/text.smartypants.html +++ b/test/new/text.smartypants.html @@ -1,4 +1,4 @@ -

Hello world ‘how’ “are” you — today…

+

Hello world ‘how’ “are” you – today…

“It’s a more ‘challenging’ smartypants test…”

diff --git a/test/new/text.smartypants.text b/test/new/text.smartypants.text index d91c8dc388..24e204643e 100644 --- a/test/new/text.smartypants.text +++ b/test/new/text.smartypants.text @@ -2,5 +2,5 @@ Hello world 'how' "are" you -- today... "It's a more 'challenging' smartypants test..." -'And,' as a bonus -- "one +'And,' as a bonus --- "one multiline" test! diff --git a/test/new/toplevel_paragraphs.gfm.html b/test/new/toplevel_paragraphs.gfm.html index 970c6f19f6..d15bfccef0 100644 --- a/test/new/toplevel_paragraphs.gfm.html +++ b/test/new/toplevel_paragraphs.gfm.html @@ -1,30 +1,30 @@

hello world - how are you - how are you

+ text after spaces + text after spaces

-

hello world

-
how are you
+

paragraph before code

+
text inside block code
-

hello world

+

paragraph before hr


-

hello world

+

paragraph before head with hash

how are you

-

hello world

+

paragraph before head with equals

how are you

-

hello world

-

how are you

+

paragraph before blockquote

+

text for blockquote

-

hello world

- +

paragraph before list

+ -

hello world

-
how are you
+

paragraph before div

+
text inside div
-

hello world -how are you

+

paragraph with span +text inside span

hello world

diff --git a/test/new/toplevel_paragraphs.gfm.text b/test/new/toplevel_paragraphs.gfm.text index 66366c07c0..8430b9f86c 100644 --- a/test/new/toplevel_paragraphs.gfm.text +++ b/test/new/toplevel_paragraphs.gfm.text @@ -1,35 +1,36 @@ hello world - how are you - how are you + text after spaces + text after spaces -hello world +paragraph before code ``` -how are you +text inside block code ``` -hello world +paragraph before hr * * * -hello world +paragraph before head with hash # how are you -hello world +paragraph before head with equals how are you =========== -hello world -> how are you +paragraph before blockquote +> text for blockquote -hello world -* how are you +paragraph before list +* text inside list -hello world -
how are you
+paragraph before div +
text inside div
-hello world -how are you +paragraph with span +text inside span hello [world][how] + [how]: /are/you
hello
diff --git a/test/new/uppercase_hex.sanitize.html b/test/new/uppercase_hex.sanitize.html new file mode 100644 index 0000000000..15b722bfe9 --- /dev/null +++ b/test/new/uppercase_hex.sanitize.html @@ -0,0 +1,2 @@ +

lowerlower +upperupper

diff --git a/test/new/uppercase_hex.sanitize.text b/test/new/uppercase_hex.sanitize.text new file mode 100644 index 0000000000..bea65b9b82 --- /dev/null +++ b/test/new/uppercase_hex.sanitize.text @@ -0,0 +1,2 @@ +lower[click me](javascript:...)lower +upper[click me](javascript:...)upper From f31d3fa43fc1b904a95388d909308fb329beb70b Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 11:59:52 -0600 Subject: [PATCH 02/17] change .text to .md --- test/index.js | 16 ++++++++-------- .../{autolink_lines.text => autolink_lines.md} | 0 ...te_list_item.text => blockquote_list_item.md} | 0 ...sitive_refs.text => case_insensitive_refs.md} | 0 test/new/{def_blocks.text => def_blocks.md} | 0 test/new/{double_link.text => double_link.md} | 0 .../{escaped_angles.text => escaped_angles.md} | 0 ...gfm_break.breaks.text => gfm_break.breaks.md} | 0 test/new/{gfm_code.text => gfm_code.md} | 0 ...gfm_code_hr_list.text => gfm_code_hr_list.md} | 0 test/new/{gfm_del.text => gfm_del.md} | 0 test/new/{gfm_em.text => gfm_em.md} | 0 .../{gfm_hashtag.gfm.text => gfm_hashtag.gfm.md} | 0 ...m_hashtag.nogfm.text => gfm_hashtag.nogfm.md} | 0 test/new/{gfm_links.text => gfm_links.md} | 0 test/new/{gfm_tables.text => gfm_tables.md} | 0 .../new/{hr_list_break.text => hr_list_break.md} | 0 ...lazy_blockquotes.text => lazy_blockquotes.md} | 0 .../{links.sanitize.text => links.sanitize.md} | 0 ...rence_style.text => links_reference_style.md} | 0 .../{list_item_text.text => list_item_text.md} | 0 test/new/{loose_lists.text => loose_lists.md} | 0 test/new/{main.text => main.md} | 0 ...ngle.text => mangle_xss.sanatize.nomangle.md} | 0 test/new/{nested_code.text => nested_code.md} | 0 test/new/{nested_em.text => nested_em.md} | 0 ...ed_square_link.text => nested_square_link.md} | 0 test/new/{not_a_link.text => not_a_link.md} | 0 test/new/{ref_paren.text => ref_paren.md} | 0 ...eUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md} | 0 test/new/{same_bullet.text => same_bullet.md} | 0 ...text.smartypants.text => text.smartypants.md} | 0 ...raphs.gfm.text => toplevel_paragraphs.gfm.md} | 0 test/new/{tricky_list.text => tricky_list.md} | 0 ...x.sanitize.text => uppercase_hex.sanitize.md} | 0 ...encoding.text => amps_and_angles_encoding.md} | 0 test/original/{auto_links.text => auto_links.md} | 0 ...ckslash_escapes.text => backslash_escapes.md} | 0 ...ocks.text => blockquotes_with_code_blocks.md} | 0 .../{code_blocks.text => code_blocks.md} | 0 test/original/{code_spans.text => code_spans.md} | 0 ...d_wrapped_paragraphs_with_list_like_lines.md} | 0 ...horizontal_rules.text => horizontal_rules.md} | 0 ...tml_advanced.text => inline_html_advanced.md} | 0 ...tml_comments.text => inline_html_comments.md} | 0 ...ne_html_simple.text => inline_html_simple.md} | 0 ...s_inline_style.text => links_inline_style.md} | 0 ...rence_style.text => links_reference_style.md} | 0 ...erences.text => links_shortcut_references.md} | 0 ...n_titles.text => literal_quotes_in_titles.md} | 0 ...ics.text => markdown_documentation_basics.md} | 0 ...tax.text => markdown_documentation_syntax.md} | 0 ...ed_blockquotes.text => nested_blockquotes.md} | 0 ...lists.text => ordered_and_unordered_lists.md} | 0 ...m_together.text => strong_and_em_together.md} | 0 test/original/{tabs.text => tabs.md} | 0 test/original/{tidyness.text => tidyness.md} | 0 ...encoding.text => amps_and_angles_encoding.md} | 0 test/tests/{auto_links.text => auto_links.md} | 0 .../{autolink_lines.text => autolink_lines.md} | 0 ...ckslash_escapes.text => backslash_escapes.md} | 0 ...te_list_item.text => blockquote_list_item.md} | 0 ...ocks.text => blockquotes_with_code_blocks.md} | 0 ...sitive_refs.text => case_insensitive_refs.md} | 0 test/tests/{code_blocks.text => code_blocks.md} | 0 test/tests/{code_spans.text => code_spans.md} | 0 test/tests/{def_blocks.text => def_blocks.md} | 0 test/tests/{double_link.text => double_link.md} | 0 .../{escaped_angles.text => escaped_angles.md} | 0 ...gfm_break.breaks.text => gfm_break.breaks.md} | 0 test/tests/{gfm_code.text => gfm_code.md} | 0 ...gfm_code_hr_list.text => gfm_code_hr_list.md} | 0 test/tests/{gfm_del.text => gfm_del.md} | 0 test/tests/{gfm_em.text => gfm_em.md} | 0 .../{gfm_hashtag.gfm.text => gfm_hashtag.gfm.md} | 0 ...m_hashtag.nogfm.text => gfm_hashtag.nogfm.md} | 0 test/tests/{gfm_links.text => gfm_links.md} | 0 test/tests/{gfm_tables.text => gfm_tables.md} | 0 ...ped_paragraphs_with_list_like_lines.nogfm.md} | 0 ...horizontal_rules.text => horizontal_rules.md} | 0 .../{hr_list_break.text => hr_list_break.md} | 0 ...tml_advanced.text => inline_html_advanced.md} | 0 ...tml_comments.text => inline_html_comments.md} | 0 ...ne_html_simple.text => inline_html_simple.md} | 0 ...lazy_blockquotes.text => lazy_blockquotes.md} | 0 .../{links.sanitize.text => links.sanitize.md} | 0 ...s_inline_style.text => links_inline_style.md} | 0 ...rence_style.text => links_reference_style.md} | 0 ...erences.text => links_shortcut_references.md} | 0 .../{list_item_text.text => list_item_text.md} | 0 ...n_titles.text => literal_quotes_in_titles.md} | 0 test/tests/{loose_lists.text => loose_lists.md} | 0 test/tests/{main.text => main.md} | 0 ...ngle.text => mangle_xss.sanatize.nomangle.md} | 0 ...ics.text => markdown_documentation_basics.md} | 0 ...tax.text => markdown_documentation_syntax.md} | 0 ...ed_blockquotes.text => nested_blockquotes.md} | 0 test/tests/{nested_code.text => nested_code.md} | 0 test/tests/{nested_em.text => nested_em.md} | 0 ...ed_square_link.text => nested_square_link.md} | 0 test/tests/{not_a_link.text => not_a_link.md} | 0 ...lists.text => ordered_and_unordered_lists.md} | 0 test/tests/{ref_paren.text => ref_paren.md} | 0 ...eUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md} | 0 test/tests/{same_bullet.text => same_bullet.md} | 0 ...m_together.text => strong_and_em_together.md} | 0 test/tests/{tabs.text => tabs.md} | 0 ...text.smartypants.text => text.smartypants.md} | 0 test/tests/{tidyness.text => tidyness.md} | 0 ...raphs.gfm.text => toplevel_paragraphs.gfm.md} | 0 test/tests/{tricky_list.text => tricky_list.md} | 0 ...x.sanitize.text => uppercase_hex.sanitize.md} | 0 112 files changed, 8 insertions(+), 8 deletions(-) rename test/new/{autolink_lines.text => autolink_lines.md} (100%) rename test/new/{blockquote_list_item.text => blockquote_list_item.md} (100%) rename test/new/{case_insensitive_refs.text => case_insensitive_refs.md} (100%) rename test/new/{def_blocks.text => def_blocks.md} (100%) rename test/new/{double_link.text => double_link.md} (100%) rename test/new/{escaped_angles.text => escaped_angles.md} (100%) rename test/new/{gfm_break.breaks.text => gfm_break.breaks.md} (100%) rename test/new/{gfm_code.text => gfm_code.md} (100%) rename test/new/{gfm_code_hr_list.text => gfm_code_hr_list.md} (100%) rename test/new/{gfm_del.text => gfm_del.md} (100%) rename test/new/{gfm_em.text => gfm_em.md} (100%) rename test/new/{gfm_hashtag.gfm.text => gfm_hashtag.gfm.md} (100%) rename test/new/{gfm_hashtag.nogfm.text => gfm_hashtag.nogfm.md} (100%) rename test/new/{gfm_links.text => gfm_links.md} (100%) rename test/new/{gfm_tables.text => gfm_tables.md} (100%) rename test/new/{hr_list_break.text => hr_list_break.md} (100%) rename test/new/{lazy_blockquotes.text => lazy_blockquotes.md} (100%) rename test/new/{links.sanitize.text => links.sanitize.md} (100%) rename test/new/{links_reference_style.text => links_reference_style.md} (100%) rename test/new/{list_item_text.text => list_item_text.md} (100%) rename test/new/{loose_lists.text => loose_lists.md} (100%) rename test/new/{main.text => main.md} (100%) rename test/new/{mangle_xss.sanatize.nomangle.text => mangle_xss.sanatize.nomangle.md} (100%) rename test/new/{nested_code.text => nested_code.md} (100%) rename test/new/{nested_em.text => nested_em.md} (100%) rename test/new/{nested_square_link.text => nested_square_link.md} (100%) rename test/new/{not_a_link.text => not_a_link.md} (100%) rename test/new/{ref_paren.text => ref_paren.md} (100%) rename test/new/{relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text => relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md} (100%) rename test/new/{same_bullet.text => same_bullet.md} (100%) rename test/new/{text.smartypants.text => text.smartypants.md} (100%) rename test/new/{toplevel_paragraphs.gfm.text => toplevel_paragraphs.gfm.md} (100%) rename test/new/{tricky_list.text => tricky_list.md} (100%) rename test/new/{uppercase_hex.sanitize.text => uppercase_hex.sanitize.md} (100%) rename test/original/{amps_and_angles_encoding.text => amps_and_angles_encoding.md} (100%) rename test/original/{auto_links.text => auto_links.md} (100%) rename test/original/{backslash_escapes.text => backslash_escapes.md} (100%) rename test/original/{blockquotes_with_code_blocks.text => blockquotes_with_code_blocks.md} (100%) rename test/original/{code_blocks.text => code_blocks.md} (100%) rename test/original/{code_spans.text => code_spans.md} (100%) rename test/original/{hard_wrapped_paragraphs_with_list_like_lines.text => hard_wrapped_paragraphs_with_list_like_lines.md} (100%) rename test/original/{horizontal_rules.text => horizontal_rules.md} (100%) rename test/original/{inline_html_advanced.text => inline_html_advanced.md} (100%) rename test/original/{inline_html_comments.text => inline_html_comments.md} (100%) rename test/original/{inline_html_simple.text => inline_html_simple.md} (100%) rename test/original/{links_inline_style.text => links_inline_style.md} (100%) rename test/original/{links_reference_style.text => links_reference_style.md} (100%) rename test/original/{links_shortcut_references.text => links_shortcut_references.md} (100%) rename test/original/{literal_quotes_in_titles.text => literal_quotes_in_titles.md} (100%) rename test/original/{markdown_documentation_basics.text => markdown_documentation_basics.md} (100%) rename test/original/{markdown_documentation_syntax.text => markdown_documentation_syntax.md} (100%) rename test/original/{nested_blockquotes.text => nested_blockquotes.md} (100%) rename test/original/{ordered_and_unordered_lists.text => ordered_and_unordered_lists.md} (100%) rename test/original/{strong_and_em_together.text => strong_and_em_together.md} (100%) rename test/original/{tabs.text => tabs.md} (100%) rename test/original/{tidyness.text => tidyness.md} (100%) rename test/tests/{amps_and_angles_encoding.text => amps_and_angles_encoding.md} (100%) rename test/tests/{auto_links.text => auto_links.md} (100%) rename test/tests/{autolink_lines.text => autolink_lines.md} (100%) rename test/tests/{backslash_escapes.text => backslash_escapes.md} (100%) rename test/tests/{blockquote_list_item.text => blockquote_list_item.md} (100%) rename test/tests/{blockquotes_with_code_blocks.text => blockquotes_with_code_blocks.md} (100%) rename test/tests/{case_insensitive_refs.text => case_insensitive_refs.md} (100%) rename test/tests/{code_blocks.text => code_blocks.md} (100%) rename test/tests/{code_spans.text => code_spans.md} (100%) rename test/tests/{def_blocks.text => def_blocks.md} (100%) rename test/tests/{double_link.text => double_link.md} (100%) rename test/tests/{escaped_angles.text => escaped_angles.md} (100%) rename test/tests/{gfm_break.breaks.text => gfm_break.breaks.md} (100%) rename test/tests/{gfm_code.text => gfm_code.md} (100%) rename test/tests/{gfm_code_hr_list.text => gfm_code_hr_list.md} (100%) rename test/tests/{gfm_del.text => gfm_del.md} (100%) rename test/tests/{gfm_em.text => gfm_em.md} (100%) rename test/tests/{gfm_hashtag.gfm.text => gfm_hashtag.gfm.md} (100%) rename test/tests/{gfm_hashtag.nogfm.text => gfm_hashtag.nogfm.md} (100%) rename test/tests/{gfm_links.text => gfm_links.md} (100%) rename test/tests/{gfm_tables.text => gfm_tables.md} (100%) rename test/tests/{hard_wrapped_paragraphs_with_list_like_lines.nogfm.text => hard_wrapped_paragraphs_with_list_like_lines.nogfm.md} (100%) rename test/tests/{horizontal_rules.text => horizontal_rules.md} (100%) rename test/tests/{hr_list_break.text => hr_list_break.md} (100%) rename test/tests/{inline_html_advanced.text => inline_html_advanced.md} (100%) rename test/tests/{inline_html_comments.text => inline_html_comments.md} (100%) rename test/tests/{inline_html_simple.text => inline_html_simple.md} (100%) rename test/tests/{lazy_blockquotes.text => lazy_blockquotes.md} (100%) rename test/tests/{links.sanitize.text => links.sanitize.md} (100%) rename test/tests/{links_inline_style.text => links_inline_style.md} (100%) rename test/tests/{links_reference_style.text => links_reference_style.md} (100%) rename test/tests/{links_shortcut_references.text => links_shortcut_references.md} (100%) rename test/tests/{list_item_text.text => list_item_text.md} (100%) rename test/tests/{literal_quotes_in_titles.text => literal_quotes_in_titles.md} (100%) rename test/tests/{loose_lists.text => loose_lists.md} (100%) rename test/tests/{main.text => main.md} (100%) rename test/tests/{mangle_xss.sanatize.nomangle.text => mangle_xss.sanatize.nomangle.md} (100%) rename test/tests/{markdown_documentation_basics.text => markdown_documentation_basics.md} (100%) rename test/tests/{markdown_documentation_syntax.text => markdown_documentation_syntax.md} (100%) rename test/tests/{nested_blockquotes.text => nested_blockquotes.md} (100%) rename test/tests/{nested_code.text => nested_code.md} (100%) rename test/tests/{nested_em.text => nested_em.md} (100%) rename test/tests/{nested_square_link.text => nested_square_link.md} (100%) rename test/tests/{not_a_link.text => not_a_link.md} (100%) rename test/tests/{ordered_and_unordered_lists.text => ordered_and_unordered_lists.md} (100%) rename test/tests/{ref_paren.text => ref_paren.md} (100%) rename test/tests/{relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text => relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md} (100%) rename test/tests/{same_bullet.text => same_bullet.md} (100%) rename test/tests/{strong_and_em_together.text => strong_and_em_together.md} (100%) rename test/tests/{tabs.text => tabs.md} (100%) rename test/tests/{text.smartypants.text => text.smartypants.md} (100%) rename test/tests/{tidyness.text => tidyness.md} (100%) rename test/tests/{toplevel_paragraphs.gfm.text => toplevel_paragraphs.gfm.md} (100%) rename test/tests/{tricky_list.text => tricky_list.md} (100%) rename test/tests/{uppercase_hex.sanitize.text => uppercase_hex.sanitize.md} (100%) diff --git a/test/index.js b/test/index.js index 415e8d6c91..c6f869dbfa 100644 --- a/test/index.js +++ b/test/index.js @@ -160,10 +160,10 @@ main: console.log('%d/%d tests completed successfully.', complete, len); if (failed) console.log('%d/%d tests failed.', failed, len); - // Tests currently failing. - if (~failures.indexOf('def_blocks.text')) { - failed -= 1; - } + // // Tests currently failing. + // if (~failures.indexOf('def_blocks.text')) { + // failed -= 1; + // } return !failed; } @@ -182,15 +182,15 @@ function bench(name, func) { // comparison to older benchmark times. fs.readdirSync(__dirname + '/new').forEach(function(name) { if (path.extname(name) === '.html') return; - if (name === 'main.text') return; + if (name === 'main.md') return; delete files[name]; }); - files['backslash_escapes.text'] = { + files['backslash_escapes.md'] = { text: 'hello world \\[how](are you) today' }; - files['main.text'].text = files['main.text'].text.replace('* * *\n\n', ''); + files['main.md'].text = files['main.md'].text.replace('* * *\n\n', ''); } var start = Date.now() @@ -342,7 +342,7 @@ function fix(options) { fs.readdirSync(path.resolve(__dirname, 'original')).forEach(function(file) { var nfile = file; if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.') === 0) { - nfile = file.replace(/\.(text|html)$/, '.nogfm.$1'); + nfile = file.replace(/([^.]+)$/, 'nogfm.$1'); } fs.writeFileSync(path.resolve(__dirname, 'tests', nfile), fs.readFileSync(path.resolve(__dirname, 'original', file))); diff --git a/test/new/autolink_lines.text b/test/new/autolink_lines.md similarity index 100% rename from test/new/autolink_lines.text rename to test/new/autolink_lines.md diff --git a/test/new/blockquote_list_item.text b/test/new/blockquote_list_item.md similarity index 100% rename from test/new/blockquote_list_item.text rename to test/new/blockquote_list_item.md diff --git a/test/new/case_insensitive_refs.text b/test/new/case_insensitive_refs.md similarity index 100% rename from test/new/case_insensitive_refs.text rename to test/new/case_insensitive_refs.md diff --git a/test/new/def_blocks.text b/test/new/def_blocks.md similarity index 100% rename from test/new/def_blocks.text rename to test/new/def_blocks.md diff --git a/test/new/double_link.text b/test/new/double_link.md similarity index 100% rename from test/new/double_link.text rename to test/new/double_link.md diff --git a/test/new/escaped_angles.text b/test/new/escaped_angles.md similarity index 100% rename from test/new/escaped_angles.text rename to test/new/escaped_angles.md diff --git a/test/new/gfm_break.breaks.text b/test/new/gfm_break.breaks.md similarity index 100% rename from test/new/gfm_break.breaks.text rename to test/new/gfm_break.breaks.md diff --git a/test/new/gfm_code.text b/test/new/gfm_code.md similarity index 100% rename from test/new/gfm_code.text rename to test/new/gfm_code.md diff --git a/test/new/gfm_code_hr_list.text b/test/new/gfm_code_hr_list.md similarity index 100% rename from test/new/gfm_code_hr_list.text rename to test/new/gfm_code_hr_list.md diff --git a/test/new/gfm_del.text b/test/new/gfm_del.md similarity index 100% rename from test/new/gfm_del.text rename to test/new/gfm_del.md diff --git a/test/new/gfm_em.text b/test/new/gfm_em.md similarity index 100% rename from test/new/gfm_em.text rename to test/new/gfm_em.md diff --git a/test/new/gfm_hashtag.gfm.text b/test/new/gfm_hashtag.gfm.md similarity index 100% rename from test/new/gfm_hashtag.gfm.text rename to test/new/gfm_hashtag.gfm.md diff --git a/test/new/gfm_hashtag.nogfm.text b/test/new/gfm_hashtag.nogfm.md similarity index 100% rename from test/new/gfm_hashtag.nogfm.text rename to test/new/gfm_hashtag.nogfm.md diff --git a/test/new/gfm_links.text b/test/new/gfm_links.md similarity index 100% rename from test/new/gfm_links.text rename to test/new/gfm_links.md diff --git a/test/new/gfm_tables.text b/test/new/gfm_tables.md similarity index 100% rename from test/new/gfm_tables.text rename to test/new/gfm_tables.md diff --git a/test/new/hr_list_break.text b/test/new/hr_list_break.md similarity index 100% rename from test/new/hr_list_break.text rename to test/new/hr_list_break.md diff --git a/test/new/lazy_blockquotes.text b/test/new/lazy_blockquotes.md similarity index 100% rename from test/new/lazy_blockquotes.text rename to test/new/lazy_blockquotes.md diff --git a/test/new/links.sanitize.text b/test/new/links.sanitize.md similarity index 100% rename from test/new/links.sanitize.text rename to test/new/links.sanitize.md diff --git a/test/new/links_reference_style.text b/test/new/links_reference_style.md similarity index 100% rename from test/new/links_reference_style.text rename to test/new/links_reference_style.md diff --git a/test/new/list_item_text.text b/test/new/list_item_text.md similarity index 100% rename from test/new/list_item_text.text rename to test/new/list_item_text.md diff --git a/test/new/loose_lists.text b/test/new/loose_lists.md similarity index 100% rename from test/new/loose_lists.text rename to test/new/loose_lists.md diff --git a/test/new/main.text b/test/new/main.md similarity index 100% rename from test/new/main.text rename to test/new/main.md diff --git a/test/new/mangle_xss.sanatize.nomangle.text b/test/new/mangle_xss.sanatize.nomangle.md similarity index 100% rename from test/new/mangle_xss.sanatize.nomangle.text rename to test/new/mangle_xss.sanatize.nomangle.md diff --git a/test/new/nested_code.text b/test/new/nested_code.md similarity index 100% rename from test/new/nested_code.text rename to test/new/nested_code.md diff --git a/test/new/nested_em.text b/test/new/nested_em.md similarity index 100% rename from test/new/nested_em.text rename to test/new/nested_em.md diff --git a/test/new/nested_square_link.text b/test/new/nested_square_link.md similarity index 100% rename from test/new/nested_square_link.text rename to test/new/nested_square_link.md diff --git a/test/new/not_a_link.text b/test/new/not_a_link.md similarity index 100% rename from test/new/not_a_link.text rename to test/new/not_a_link.md diff --git a/test/new/ref_paren.text b/test/new/ref_paren.md similarity index 100% rename from test/new/ref_paren.text rename to test/new/ref_paren.md diff --git a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text b/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md similarity index 100% rename from test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text rename to test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md diff --git a/test/new/same_bullet.text b/test/new/same_bullet.md similarity index 100% rename from test/new/same_bullet.text rename to test/new/same_bullet.md diff --git a/test/new/text.smartypants.text b/test/new/text.smartypants.md similarity index 100% rename from test/new/text.smartypants.text rename to test/new/text.smartypants.md diff --git a/test/new/toplevel_paragraphs.gfm.text b/test/new/toplevel_paragraphs.gfm.md similarity index 100% rename from test/new/toplevel_paragraphs.gfm.text rename to test/new/toplevel_paragraphs.gfm.md diff --git a/test/new/tricky_list.text b/test/new/tricky_list.md similarity index 100% rename from test/new/tricky_list.text rename to test/new/tricky_list.md diff --git a/test/new/uppercase_hex.sanitize.text b/test/new/uppercase_hex.sanitize.md similarity index 100% rename from test/new/uppercase_hex.sanitize.text rename to test/new/uppercase_hex.sanitize.md diff --git a/test/original/amps_and_angles_encoding.text b/test/original/amps_and_angles_encoding.md similarity index 100% rename from test/original/amps_and_angles_encoding.text rename to test/original/amps_and_angles_encoding.md diff --git a/test/original/auto_links.text b/test/original/auto_links.md similarity index 100% rename from test/original/auto_links.text rename to test/original/auto_links.md diff --git a/test/original/backslash_escapes.text b/test/original/backslash_escapes.md similarity index 100% rename from test/original/backslash_escapes.text rename to test/original/backslash_escapes.md diff --git a/test/original/blockquotes_with_code_blocks.text b/test/original/blockquotes_with_code_blocks.md similarity index 100% rename from test/original/blockquotes_with_code_blocks.text rename to test/original/blockquotes_with_code_blocks.md diff --git a/test/original/code_blocks.text b/test/original/code_blocks.md similarity index 100% rename from test/original/code_blocks.text rename to test/original/code_blocks.md diff --git a/test/original/code_spans.text b/test/original/code_spans.md similarity index 100% rename from test/original/code_spans.text rename to test/original/code_spans.md diff --git a/test/original/hard_wrapped_paragraphs_with_list_like_lines.text b/test/original/hard_wrapped_paragraphs_with_list_like_lines.md similarity index 100% rename from test/original/hard_wrapped_paragraphs_with_list_like_lines.text rename to test/original/hard_wrapped_paragraphs_with_list_like_lines.md diff --git a/test/original/horizontal_rules.text b/test/original/horizontal_rules.md similarity index 100% rename from test/original/horizontal_rules.text rename to test/original/horizontal_rules.md diff --git a/test/original/inline_html_advanced.text b/test/original/inline_html_advanced.md similarity index 100% rename from test/original/inline_html_advanced.text rename to test/original/inline_html_advanced.md diff --git a/test/original/inline_html_comments.text b/test/original/inline_html_comments.md similarity index 100% rename from test/original/inline_html_comments.text rename to test/original/inline_html_comments.md diff --git a/test/original/inline_html_simple.text b/test/original/inline_html_simple.md similarity index 100% rename from test/original/inline_html_simple.text rename to test/original/inline_html_simple.md diff --git a/test/original/links_inline_style.text b/test/original/links_inline_style.md similarity index 100% rename from test/original/links_inline_style.text rename to test/original/links_inline_style.md diff --git a/test/original/links_reference_style.text b/test/original/links_reference_style.md similarity index 100% rename from test/original/links_reference_style.text rename to test/original/links_reference_style.md diff --git a/test/original/links_shortcut_references.text b/test/original/links_shortcut_references.md similarity index 100% rename from test/original/links_shortcut_references.text rename to test/original/links_shortcut_references.md diff --git a/test/original/literal_quotes_in_titles.text b/test/original/literal_quotes_in_titles.md similarity index 100% rename from test/original/literal_quotes_in_titles.text rename to test/original/literal_quotes_in_titles.md diff --git a/test/original/markdown_documentation_basics.text b/test/original/markdown_documentation_basics.md similarity index 100% rename from test/original/markdown_documentation_basics.text rename to test/original/markdown_documentation_basics.md diff --git a/test/original/markdown_documentation_syntax.text b/test/original/markdown_documentation_syntax.md similarity index 100% rename from test/original/markdown_documentation_syntax.text rename to test/original/markdown_documentation_syntax.md diff --git a/test/original/nested_blockquotes.text b/test/original/nested_blockquotes.md similarity index 100% rename from test/original/nested_blockquotes.text rename to test/original/nested_blockquotes.md diff --git a/test/original/ordered_and_unordered_lists.text b/test/original/ordered_and_unordered_lists.md similarity index 100% rename from test/original/ordered_and_unordered_lists.text rename to test/original/ordered_and_unordered_lists.md diff --git a/test/original/strong_and_em_together.text b/test/original/strong_and_em_together.md similarity index 100% rename from test/original/strong_and_em_together.text rename to test/original/strong_and_em_together.md diff --git a/test/original/tabs.text b/test/original/tabs.md similarity index 100% rename from test/original/tabs.text rename to test/original/tabs.md diff --git a/test/original/tidyness.text b/test/original/tidyness.md similarity index 100% rename from test/original/tidyness.text rename to test/original/tidyness.md diff --git a/test/tests/amps_and_angles_encoding.text b/test/tests/amps_and_angles_encoding.md similarity index 100% rename from test/tests/amps_and_angles_encoding.text rename to test/tests/amps_and_angles_encoding.md diff --git a/test/tests/auto_links.text b/test/tests/auto_links.md similarity index 100% rename from test/tests/auto_links.text rename to test/tests/auto_links.md diff --git a/test/tests/autolink_lines.text b/test/tests/autolink_lines.md similarity index 100% rename from test/tests/autolink_lines.text rename to test/tests/autolink_lines.md diff --git a/test/tests/backslash_escapes.text b/test/tests/backslash_escapes.md similarity index 100% rename from test/tests/backslash_escapes.text rename to test/tests/backslash_escapes.md diff --git a/test/tests/blockquote_list_item.text b/test/tests/blockquote_list_item.md similarity index 100% rename from test/tests/blockquote_list_item.text rename to test/tests/blockquote_list_item.md diff --git a/test/tests/blockquotes_with_code_blocks.text b/test/tests/blockquotes_with_code_blocks.md similarity index 100% rename from test/tests/blockquotes_with_code_blocks.text rename to test/tests/blockquotes_with_code_blocks.md diff --git a/test/tests/case_insensitive_refs.text b/test/tests/case_insensitive_refs.md similarity index 100% rename from test/tests/case_insensitive_refs.text rename to test/tests/case_insensitive_refs.md diff --git a/test/tests/code_blocks.text b/test/tests/code_blocks.md similarity index 100% rename from test/tests/code_blocks.text rename to test/tests/code_blocks.md diff --git a/test/tests/code_spans.text b/test/tests/code_spans.md similarity index 100% rename from test/tests/code_spans.text rename to test/tests/code_spans.md diff --git a/test/tests/def_blocks.text b/test/tests/def_blocks.md similarity index 100% rename from test/tests/def_blocks.text rename to test/tests/def_blocks.md diff --git a/test/tests/double_link.text b/test/tests/double_link.md similarity index 100% rename from test/tests/double_link.text rename to test/tests/double_link.md diff --git a/test/tests/escaped_angles.text b/test/tests/escaped_angles.md similarity index 100% rename from test/tests/escaped_angles.text rename to test/tests/escaped_angles.md diff --git a/test/tests/gfm_break.breaks.text b/test/tests/gfm_break.breaks.md similarity index 100% rename from test/tests/gfm_break.breaks.text rename to test/tests/gfm_break.breaks.md diff --git a/test/tests/gfm_code.text b/test/tests/gfm_code.md similarity index 100% rename from test/tests/gfm_code.text rename to test/tests/gfm_code.md diff --git a/test/tests/gfm_code_hr_list.text b/test/tests/gfm_code_hr_list.md similarity index 100% rename from test/tests/gfm_code_hr_list.text rename to test/tests/gfm_code_hr_list.md diff --git a/test/tests/gfm_del.text b/test/tests/gfm_del.md similarity index 100% rename from test/tests/gfm_del.text rename to test/tests/gfm_del.md diff --git a/test/tests/gfm_em.text b/test/tests/gfm_em.md similarity index 100% rename from test/tests/gfm_em.text rename to test/tests/gfm_em.md diff --git a/test/tests/gfm_hashtag.gfm.text b/test/tests/gfm_hashtag.gfm.md similarity index 100% rename from test/tests/gfm_hashtag.gfm.text rename to test/tests/gfm_hashtag.gfm.md diff --git a/test/tests/gfm_hashtag.nogfm.text b/test/tests/gfm_hashtag.nogfm.md similarity index 100% rename from test/tests/gfm_hashtag.nogfm.text rename to test/tests/gfm_hashtag.nogfm.md diff --git a/test/tests/gfm_links.text b/test/tests/gfm_links.md similarity index 100% rename from test/tests/gfm_links.text rename to test/tests/gfm_links.md diff --git a/test/tests/gfm_tables.text b/test/tests/gfm_tables.md similarity index 100% rename from test/tests/gfm_tables.text rename to test/tests/gfm_tables.md diff --git a/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.text b/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md similarity index 100% rename from test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.text rename to test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md diff --git a/test/tests/horizontal_rules.text b/test/tests/horizontal_rules.md similarity index 100% rename from test/tests/horizontal_rules.text rename to test/tests/horizontal_rules.md diff --git a/test/tests/hr_list_break.text b/test/tests/hr_list_break.md similarity index 100% rename from test/tests/hr_list_break.text rename to test/tests/hr_list_break.md diff --git a/test/tests/inline_html_advanced.text b/test/tests/inline_html_advanced.md similarity index 100% rename from test/tests/inline_html_advanced.text rename to test/tests/inline_html_advanced.md diff --git a/test/tests/inline_html_comments.text b/test/tests/inline_html_comments.md similarity index 100% rename from test/tests/inline_html_comments.text rename to test/tests/inline_html_comments.md diff --git a/test/tests/inline_html_simple.text b/test/tests/inline_html_simple.md similarity index 100% rename from test/tests/inline_html_simple.text rename to test/tests/inline_html_simple.md diff --git a/test/tests/lazy_blockquotes.text b/test/tests/lazy_blockquotes.md similarity index 100% rename from test/tests/lazy_blockquotes.text rename to test/tests/lazy_blockquotes.md diff --git a/test/tests/links.sanitize.text b/test/tests/links.sanitize.md similarity index 100% rename from test/tests/links.sanitize.text rename to test/tests/links.sanitize.md diff --git a/test/tests/links_inline_style.text b/test/tests/links_inline_style.md similarity index 100% rename from test/tests/links_inline_style.text rename to test/tests/links_inline_style.md diff --git a/test/tests/links_reference_style.text b/test/tests/links_reference_style.md similarity index 100% rename from test/tests/links_reference_style.text rename to test/tests/links_reference_style.md diff --git a/test/tests/links_shortcut_references.text b/test/tests/links_shortcut_references.md similarity index 100% rename from test/tests/links_shortcut_references.text rename to test/tests/links_shortcut_references.md diff --git a/test/tests/list_item_text.text b/test/tests/list_item_text.md similarity index 100% rename from test/tests/list_item_text.text rename to test/tests/list_item_text.md diff --git a/test/tests/literal_quotes_in_titles.text b/test/tests/literal_quotes_in_titles.md similarity index 100% rename from test/tests/literal_quotes_in_titles.text rename to test/tests/literal_quotes_in_titles.md diff --git a/test/tests/loose_lists.text b/test/tests/loose_lists.md similarity index 100% rename from test/tests/loose_lists.text rename to test/tests/loose_lists.md diff --git a/test/tests/main.text b/test/tests/main.md similarity index 100% rename from test/tests/main.text rename to test/tests/main.md diff --git a/test/tests/mangle_xss.sanatize.nomangle.text b/test/tests/mangle_xss.sanatize.nomangle.md similarity index 100% rename from test/tests/mangle_xss.sanatize.nomangle.text rename to test/tests/mangle_xss.sanatize.nomangle.md diff --git a/test/tests/markdown_documentation_basics.text b/test/tests/markdown_documentation_basics.md similarity index 100% rename from test/tests/markdown_documentation_basics.text rename to test/tests/markdown_documentation_basics.md diff --git a/test/tests/markdown_documentation_syntax.text b/test/tests/markdown_documentation_syntax.md similarity index 100% rename from test/tests/markdown_documentation_syntax.text rename to test/tests/markdown_documentation_syntax.md diff --git a/test/tests/nested_blockquotes.text b/test/tests/nested_blockquotes.md similarity index 100% rename from test/tests/nested_blockquotes.text rename to test/tests/nested_blockquotes.md diff --git a/test/tests/nested_code.text b/test/tests/nested_code.md similarity index 100% rename from test/tests/nested_code.text rename to test/tests/nested_code.md diff --git a/test/tests/nested_em.text b/test/tests/nested_em.md similarity index 100% rename from test/tests/nested_em.text rename to test/tests/nested_em.md diff --git a/test/tests/nested_square_link.text b/test/tests/nested_square_link.md similarity index 100% rename from test/tests/nested_square_link.text rename to test/tests/nested_square_link.md diff --git a/test/tests/not_a_link.text b/test/tests/not_a_link.md similarity index 100% rename from test/tests/not_a_link.text rename to test/tests/not_a_link.md diff --git a/test/tests/ordered_and_unordered_lists.text b/test/tests/ordered_and_unordered_lists.md similarity index 100% rename from test/tests/ordered_and_unordered_lists.text rename to test/tests/ordered_and_unordered_lists.md diff --git a/test/tests/ref_paren.text b/test/tests/ref_paren.md similarity index 100% rename from test/tests/ref_paren.text rename to test/tests/ref_paren.md diff --git a/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text b/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md similarity index 100% rename from test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.text rename to test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md diff --git a/test/tests/same_bullet.text b/test/tests/same_bullet.md similarity index 100% rename from test/tests/same_bullet.text rename to test/tests/same_bullet.md diff --git a/test/tests/strong_and_em_together.text b/test/tests/strong_and_em_together.md similarity index 100% rename from test/tests/strong_and_em_together.text rename to test/tests/strong_and_em_together.md diff --git a/test/tests/tabs.text b/test/tests/tabs.md similarity index 100% rename from test/tests/tabs.text rename to test/tests/tabs.md diff --git a/test/tests/text.smartypants.text b/test/tests/text.smartypants.md similarity index 100% rename from test/tests/text.smartypants.text rename to test/tests/text.smartypants.md diff --git a/test/tests/tidyness.text b/test/tests/tidyness.md similarity index 100% rename from test/tests/tidyness.text rename to test/tests/tidyness.md diff --git a/test/tests/toplevel_paragraphs.gfm.text b/test/tests/toplevel_paragraphs.gfm.md similarity index 100% rename from test/tests/toplevel_paragraphs.gfm.text rename to test/tests/toplevel_paragraphs.gfm.md diff --git a/test/tests/tricky_list.text b/test/tests/tricky_list.md similarity index 100% rename from test/tests/tricky_list.text rename to test/tests/tricky_list.md diff --git a/test/tests/uppercase_hex.sanitize.text b/test/tests/uppercase_hex.sanitize.md similarity index 100% rename from test/tests/uppercase_hex.sanitize.text rename to test/tests/uppercase_hex.sanitize.md From 5d2e796ca2048cd4f36d10d445be9416d95ab240 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 12:07:55 -0600 Subject: [PATCH 03/17] remove invalid failing test check --- test/index.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/index.js b/test/index.js index c6f869dbfa..3a350398f5 100644 --- a/test/index.js +++ b/test/index.js @@ -160,11 +160,6 @@ main: console.log('%d/%d tests completed successfully.', complete, len); if (failed) console.log('%d/%d tests failed.', failed, len); - // // Tests currently failing. - // if (~failures.indexOf('def_blocks.text')) { - // failed -= 1; - // } - return !failed; } From 368952d1016bc403c487a8ac09ec98c3a5c9a7bb Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 13:50:46 -0600 Subject: [PATCH 04/17] add /test/tests to .gitignore --- .gitignore | 1 + test/tests/amps_and_angles_encoding.html | 17 - test/tests/amps_and_angles_encoding.md | 21 - test/tests/auto_links.html | 18 - test/tests/auto_links.md | 13 - test/tests/autolink_lines.html | 3 - test/tests/autolink_lines.md | 2 - test/tests/backslash_escapes.html | 118 --- test/tests/backslash_escapes.md | 120 --- test/tests/blockquote_list_item.html | 3 - test/tests/blockquote_list_item.md | 4 - test/tests/blockquotes_with_code_blocks.html | 15 - test/tests/blockquotes_with_code_blocks.md | 11 - test/tests/case_insensitive_refs.html | 1 - test/tests/case_insensitive_refs.md | 3 - test/tests/code_blocks.html | 18 - test/tests/code_blocks.md | 14 - test/tests/code_spans.html | 6 - test/tests/code_spans.md | 6 - test/tests/def_blocks.html | 30 - test/tests/def_blocks.md | 21 - test/tests/double_link.html | 5 - test/tests/double_link.md | 5 - test/tests/escaped_angles.html | 1 - test/tests/escaped_angles.md | 1 - test/tests/gfm_break.breaks.html | 1 - test/tests/gfm_break.breaks.md | 3 - test/tests/gfm_code.html | 10 - test/tests/gfm_code.md | 27 - test/tests/gfm_code_hr_list.html | 52 - test/tests/gfm_code_hr_list.md | 53 - test/tests/gfm_del.html | 1 - test/tests/gfm_del.md | 1 - test/tests/gfm_em.html | 1 - test/tests/gfm_em.md | 1 - test/tests/gfm_hashtag.gfm.html | 5 - test/tests/gfm_hashtag.gfm.md | 5 - test/tests/gfm_hashtag.nogfm.html | 5 - test/tests/gfm_hashtag.nogfm.md | 5 - test/tests/gfm_links.html | 2 - test/tests/gfm_links.md | 1 - test/tests/gfm_tables.html | 37 - test/tests/gfm_tables.md | 21 - ...paragraphs_with_list_like_lines.nogfm.html | 8 - ...d_paragraphs_with_list_like_lines.nogfm.md | 8 - test/tests/horizontal_rules.html | 71 -- test/tests/horizontal_rules.md | 67 -- test/tests/hr_list_break.html | 10 - test/tests/hr_list_break.md | 6 - test/tests/inline_html_advanced.html | 15 - test/tests/inline_html_advanced.md | 15 - test/tests/inline_html_comments.html | 13 - test/tests/inline_html_comments.md | 13 - test/tests/inline_html_simple.html | 72 -- test/tests/inline_html_simple.md | 69 -- test/tests/lazy_blockquotes.html | 4 - test/tests/lazy_blockquotes.md | 2 - test/tests/links.sanitize.html | 5 - test/tests/links.sanitize.md | 9 - test/tests/links_inline_style.html | 15 - test/tests/links_inline_style.md | 15 - test/tests/links_reference_style.html | 62 -- test/tests/links_reference_style.md | 81 -- test/tests/links_shortcut_references.html | 9 - test/tests/links_shortcut_references.md | 20 - test/tests/list_item_text.html | 1 - test/tests/list_item_text.md | 5 - test/tests/literal_quotes_in_titles.html | 3 - test/tests/literal_quotes_in_titles.md | 7 - test/tests/loose_lists.html | 62 -- test/tests/loose_lists.md | 59 -- test/tests/main.html | 4 - test/tests/main.md | 55 - test/tests/mangle_xss.sanatize.nomangle.html | 3 - test/tests/mangle_xss.sanatize.nomangle.md | 3 - test/tests/markdown_documentation_basics.html | 314 ------ test/tests/markdown_documentation_basics.md | 306 ------ test/tests/markdown_documentation_syntax.html | 942 ------------------ test/tests/markdown_documentation_syntax.md | 888 ----------------- test/tests/nested_blockquotes.html | 9 - test/tests/nested_blockquotes.md | 5 - test/tests/nested_code.html | 1 - test/tests/nested_code.md | 1 - test/tests/nested_em.html | 3 - test/tests/nested_em.md | 3 - test/tests/nested_square_link.html | 1 - test/tests/nested_square_link.md | 1 - test/tests/not_a_link.html | 1 - test/tests/not_a_link.md | 1 - test/tests/ordered_and_unordered_lists.html | 148 --- test/tests/ordered_and_unordered_lists.md | 131 --- test/tests/ref_paren.html | 1 - test/tests/ref_paren.md | 3 - ...=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html | 35 - ...rl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md | 27 - test/tests/same_bullet.html | 5 - test/tests/same_bullet.md | 3 - test/tests/strong_and_em_together.html | 7 - test/tests/strong_and_em_together.md | 7 - test/tests/tabs.html | 25 - test/tests/tabs.md | 21 - test/tests/text.smartypants.html | 6 - test/tests/text.smartypants.md | 6 - test/tests/tidyness.html | 8 - test/tests/tidyness.md | 5 - test/tests/toplevel_paragraphs.gfm.html | 34 - test/tests/toplevel_paragraphs.gfm.md | 38 - test/tests/tricky_list.html | 23 - test/tests/tricky_list.md | 15 - test/tests/uppercase_hex.sanitize.html | 2 - test/tests/uppercase_hex.sanitize.md | 2 - 111 files changed, 1 insertion(+), 4506 deletions(-) delete mode 100644 test/tests/amps_and_angles_encoding.html delete mode 100644 test/tests/amps_and_angles_encoding.md delete mode 100644 test/tests/auto_links.html delete mode 100644 test/tests/auto_links.md delete mode 100644 test/tests/autolink_lines.html delete mode 100644 test/tests/autolink_lines.md delete mode 100644 test/tests/backslash_escapes.html delete mode 100644 test/tests/backslash_escapes.md delete mode 100644 test/tests/blockquote_list_item.html delete mode 100644 test/tests/blockquote_list_item.md delete mode 100644 test/tests/blockquotes_with_code_blocks.html delete mode 100644 test/tests/blockquotes_with_code_blocks.md delete mode 100644 test/tests/case_insensitive_refs.html delete mode 100644 test/tests/case_insensitive_refs.md delete mode 100644 test/tests/code_blocks.html delete mode 100644 test/tests/code_blocks.md delete mode 100644 test/tests/code_spans.html delete mode 100644 test/tests/code_spans.md delete mode 100644 test/tests/def_blocks.html delete mode 100644 test/tests/def_blocks.md delete mode 100644 test/tests/double_link.html delete mode 100644 test/tests/double_link.md delete mode 100644 test/tests/escaped_angles.html delete mode 100644 test/tests/escaped_angles.md delete mode 100644 test/tests/gfm_break.breaks.html delete mode 100644 test/tests/gfm_break.breaks.md delete mode 100644 test/tests/gfm_code.html delete mode 100644 test/tests/gfm_code.md delete mode 100644 test/tests/gfm_code_hr_list.html delete mode 100644 test/tests/gfm_code_hr_list.md delete mode 100644 test/tests/gfm_del.html delete mode 100644 test/tests/gfm_del.md delete mode 100644 test/tests/gfm_em.html delete mode 100644 test/tests/gfm_em.md delete mode 100644 test/tests/gfm_hashtag.gfm.html delete mode 100644 test/tests/gfm_hashtag.gfm.md delete mode 100644 test/tests/gfm_hashtag.nogfm.html delete mode 100644 test/tests/gfm_hashtag.nogfm.md delete mode 100644 test/tests/gfm_links.html delete mode 100644 test/tests/gfm_links.md delete mode 100644 test/tests/gfm_tables.html delete mode 100644 test/tests/gfm_tables.md delete mode 100644 test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.html delete mode 100644 test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md delete mode 100644 test/tests/horizontal_rules.html delete mode 100644 test/tests/horizontal_rules.md delete mode 100644 test/tests/hr_list_break.html delete mode 100644 test/tests/hr_list_break.md delete mode 100644 test/tests/inline_html_advanced.html delete mode 100644 test/tests/inline_html_advanced.md delete mode 100644 test/tests/inline_html_comments.html delete mode 100644 test/tests/inline_html_comments.md delete mode 100644 test/tests/inline_html_simple.html delete mode 100644 test/tests/inline_html_simple.md delete mode 100644 test/tests/lazy_blockquotes.html delete mode 100644 test/tests/lazy_blockquotes.md delete mode 100644 test/tests/links.sanitize.html delete mode 100644 test/tests/links.sanitize.md delete mode 100644 test/tests/links_inline_style.html delete mode 100644 test/tests/links_inline_style.md delete mode 100644 test/tests/links_reference_style.html delete mode 100644 test/tests/links_reference_style.md delete mode 100644 test/tests/links_shortcut_references.html delete mode 100644 test/tests/links_shortcut_references.md delete mode 100644 test/tests/list_item_text.html delete mode 100644 test/tests/list_item_text.md delete mode 100644 test/tests/literal_quotes_in_titles.html delete mode 100644 test/tests/literal_quotes_in_titles.md delete mode 100644 test/tests/loose_lists.html delete mode 100644 test/tests/loose_lists.md delete mode 100644 test/tests/main.html delete mode 100644 test/tests/main.md delete mode 100644 test/tests/mangle_xss.sanatize.nomangle.html delete mode 100644 test/tests/mangle_xss.sanatize.nomangle.md delete mode 100644 test/tests/markdown_documentation_basics.html delete mode 100644 test/tests/markdown_documentation_basics.md delete mode 100644 test/tests/markdown_documentation_syntax.html delete mode 100644 test/tests/markdown_documentation_syntax.md delete mode 100644 test/tests/nested_blockquotes.html delete mode 100644 test/tests/nested_blockquotes.md delete mode 100644 test/tests/nested_code.html delete mode 100644 test/tests/nested_code.md delete mode 100644 test/tests/nested_em.html delete mode 100644 test/tests/nested_em.md delete mode 100644 test/tests/nested_square_link.html delete mode 100644 test/tests/nested_square_link.md delete mode 100644 test/tests/not_a_link.html delete mode 100644 test/tests/not_a_link.md delete mode 100644 test/tests/ordered_and_unordered_lists.html delete mode 100644 test/tests/ordered_and_unordered_lists.md delete mode 100644 test/tests/ref_paren.html delete mode 100644 test/tests/ref_paren.md delete mode 100644 test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html delete mode 100644 test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md delete mode 100644 test/tests/same_bullet.html delete mode 100644 test/tests/same_bullet.md delete mode 100644 test/tests/strong_and_em_together.html delete mode 100644 test/tests/strong_and_em_together.md delete mode 100644 test/tests/tabs.html delete mode 100644 test/tests/tabs.md delete mode 100644 test/tests/text.smartypants.html delete mode 100644 test/tests/text.smartypants.md delete mode 100644 test/tests/tidyness.html delete mode 100644 test/tests/tidyness.md delete mode 100644 test/tests/toplevel_paragraphs.gfm.html delete mode 100644 test/tests/toplevel_paragraphs.gfm.md delete mode 100644 test/tests/tricky_list.html delete mode 100644 test/tests/tricky_list.md delete mode 100644 test/tests/uppercase_hex.sanitize.html delete mode 100644 test/tests/uppercase_hex.sanitize.md diff --git a/.gitignore b/.gitignore index c2658d7d1b..8f7082c4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules/ +test/tests diff --git a/test/tests/amps_and_angles_encoding.html b/test/tests/amps_and_angles_encoding.html deleted file mode 100644 index 93c1db5505..0000000000 --- a/test/tests/amps_and_angles_encoding.html +++ /dev/null @@ -1,17 +0,0 @@ -

AT&T has an ampersand in their name.

- -

AT&T is another way to write it.

- -

This & that.

- -

4 < 5.

- -

6 > 5.

- -

Here's a link with an ampersand in the URL.

- -

Here's a link with an amersand in the link text: AT&T.

- -

Here's an inline link.

- -

Here's an inline link.

diff --git a/test/tests/amps_and_angles_encoding.md b/test/tests/amps_and_angles_encoding.md deleted file mode 100644 index 89ec3ae1d1..0000000000 --- a/test/tests/amps_and_angles_encoding.md +++ /dev/null @@ -1,21 +0,0 @@ -AT&T has an ampersand in their name. - -AT&T is another way to write it. - -This & that. - -4 < 5. - -6 > 5. - -Here's a [link] [1] with an ampersand in the URL. - -Here's a link with an amersand in the link text: [AT&T] [2]. - -Here's an inline [link](/script?foo=1&bar=2). - -Here's an inline [link](). - - -[1]: http://example.com/?foo=1&bar=2 -[2]: http://att.com/ "AT&T" diff --git a/test/tests/auto_links.html b/test/tests/auto_links.html deleted file mode 100644 index f8df9852c7..0000000000 --- a/test/tests/auto_links.html +++ /dev/null @@ -1,18 +0,0 @@ -

Link: http://example.com/.

- -

With an ampersand: http://example.com/?foo=1&bar=2

- - - -
-

Blockquoted: http://example.com/

-
- -

Auto-links should not occur here: <http://example.com/>

- -
or here: <http://example.com/>
-
diff --git a/test/tests/auto_links.md b/test/tests/auto_links.md deleted file mode 100644 index f85767b48a..0000000000 --- a/test/tests/auto_links.md +++ /dev/null @@ -1,13 +0,0 @@ -Link: . - -With an ampersand: - -* In a list? -* -* It should. - -> Blockquoted: - -Auto-links should not occur here: `` - - or here: diff --git a/test/tests/autolink_lines.html b/test/tests/autolink_lines.html deleted file mode 100644 index aa2bed4d32..0000000000 --- a/test/tests/autolink_lines.html +++ /dev/null @@ -1,3 +0,0 @@ -

hello world -http://example.com -

diff --git a/test/tests/autolink_lines.md b/test/tests/autolink_lines.md deleted file mode 100644 index c9b61a2ca3..0000000000 --- a/test/tests/autolink_lines.md +++ /dev/null @@ -1,2 +0,0 @@ -hello world - diff --git a/test/tests/backslash_escapes.html b/test/tests/backslash_escapes.html deleted file mode 100644 index c7f0e5ee2f..0000000000 --- a/test/tests/backslash_escapes.html +++ /dev/null @@ -1,118 +0,0 @@ -

These should all get escaped:

- -

Backslash: \

- -

Backtick: `

- -

Asterisk: *

- -

Underscore: _

- -

Left brace: {

- -

Right brace: }

- -

Left bracket: [

- -

Right bracket: ]

- -

Left paren: (

- -

Right paren: )

- -

Greater-than: >

- -

Hash: #

- -

Period: .

- -

Bang: !

- -

Plus: +

- -

Minus: -

- -

These should not, because they occur within a code block:

- -
Backslash: \\
-
-Backtick: \`
-
-Asterisk: \*
-
-Underscore: \_
-
-Left brace: \{
-
-Right brace: \}
-
-Left bracket: \[
-
-Right bracket: \]
-
-Left paren: \(
-
-Right paren: \)
-
-Greater-than: \>
-
-Hash: \#
-
-Period: \.
-
-Bang: \!
-
-Plus: \+
-
-Minus: \-
-
- -

Nor should these, which occur in code spans:

- -

Backslash: \\

- -

Backtick: \`

- -

Asterisk: \*

- -

Underscore: \_

- -

Left brace: \{

- -

Right brace: \}

- -

Left bracket: \[

- -

Right bracket: \]

- -

Left paren: \(

- -

Right paren: \)

- -

Greater-than: \>

- -

Hash: \#

- -

Period: \.

- -

Bang: \!

- -

Plus: \+

- -

Minus: \-

- - -

These should get escaped, even though they're matching pairs for -other Markdown constructs:

- -

*asterisks*

- -

_underscores_

- -

`backticks`

- -

This is a code span with a literal backslash-backtick sequence: \`

- -

This is a tag with unescaped backticks bar.

- -

This is a tag with backslashes bar.

diff --git a/test/tests/backslash_escapes.md b/test/tests/backslash_escapes.md deleted file mode 100644 index 5b014cb33d..0000000000 --- a/test/tests/backslash_escapes.md +++ /dev/null @@ -1,120 +0,0 @@ -These should all get escaped: - -Backslash: \\ - -Backtick: \` - -Asterisk: \* - -Underscore: \_ - -Left brace: \{ - -Right brace: \} - -Left bracket: \[ - -Right bracket: \] - -Left paren: \( - -Right paren: \) - -Greater-than: \> - -Hash: \# - -Period: \. - -Bang: \! - -Plus: \+ - -Minus: \- - - - -These should not, because they occur within a code block: - - Backslash: \\ - - Backtick: \` - - Asterisk: \* - - Underscore: \_ - - Left brace: \{ - - Right brace: \} - - Left bracket: \[ - - Right bracket: \] - - Left paren: \( - - Right paren: \) - - Greater-than: \> - - Hash: \# - - Period: \. - - Bang: \! - - Plus: \+ - - Minus: \- - - -Nor should these, which occur in code spans: - -Backslash: `\\` - -Backtick: `` \` `` - -Asterisk: `\*` - -Underscore: `\_` - -Left brace: `\{` - -Right brace: `\}` - -Left bracket: `\[` - -Right bracket: `\]` - -Left paren: `\(` - -Right paren: `\)` - -Greater-than: `\>` - -Hash: `\#` - -Period: `\.` - -Bang: `\!` - -Plus: `\+` - -Minus: `\-` - - -These should get escaped, even though they're matching pairs for -other Markdown constructs: - -\*asterisks\* - -\_underscores\_ - -\`backticks\` - -This is a code span with a literal backslash-backtick sequence: `` \` `` - -This is a tag with unescaped backticks bar. - -This is a tag with backslashes bar. diff --git a/test/tests/blockquote_list_item.html b/test/tests/blockquote_list_item.html deleted file mode 100644 index 83cf0bddf0..0000000000 --- a/test/tests/blockquote_list_item.html +++ /dev/null @@ -1,3 +0,0 @@ -

This fails in markdown.pl and upskirt:

- -
  • hello

    world

diff --git a/test/tests/blockquote_list_item.md b/test/tests/blockquote_list_item.md deleted file mode 100644 index 19e938294a..0000000000 --- a/test/tests/blockquote_list_item.md +++ /dev/null @@ -1,4 +0,0 @@ -This fails in markdown.pl and upskirt: - -* hello - > world diff --git a/test/tests/blockquotes_with_code_blocks.html b/test/tests/blockquotes_with_code_blocks.html deleted file mode 100644 index 38ee5f097d..0000000000 --- a/test/tests/blockquotes_with_code_blocks.html +++ /dev/null @@ -1,15 +0,0 @@ -
-

Example:

- -
sub status {
-    print "working";
-}
-
- -

Or:

- -
sub status {
-    return "working";
-}
-
-
diff --git a/test/tests/blockquotes_with_code_blocks.md b/test/tests/blockquotes_with_code_blocks.md deleted file mode 100644 index c31d171049..0000000000 --- a/test/tests/blockquotes_with_code_blocks.md +++ /dev/null @@ -1,11 +0,0 @@ -> Example: -> -> sub status { -> print "working"; -> } -> -> Or: -> -> sub status { -> return "working"; -> } diff --git a/test/tests/case_insensitive_refs.html b/test/tests/case_insensitive_refs.html deleted file mode 100644 index c54388ea5c..0000000000 --- a/test/tests/case_insensitive_refs.html +++ /dev/null @@ -1 +0,0 @@ -

hi

diff --git a/test/tests/case_insensitive_refs.md b/test/tests/case_insensitive_refs.md deleted file mode 100644 index 598915a8a8..0000000000 --- a/test/tests/case_insensitive_refs.md +++ /dev/null @@ -1,3 +0,0 @@ -[hi] - -[HI]: /url diff --git a/test/tests/code_blocks.html b/test/tests/code_blocks.html deleted file mode 100644 index 32703f5cb4..0000000000 --- a/test/tests/code_blocks.html +++ /dev/null @@ -1,18 +0,0 @@ -
code block on the first line
-
- -

Regular text.

- -
code block indented by spaces
-
- -

Regular text.

- -
the lines in this block  
-all contain trailing spaces  
-
- -

Regular Text.

- -
code block on the last line
-
diff --git a/test/tests/code_blocks.md b/test/tests/code_blocks.md deleted file mode 100644 index 01f9a733b6..0000000000 --- a/test/tests/code_blocks.md +++ /dev/null @@ -1,14 +0,0 @@ - code block on the first line - -Regular text. - - code block indented by spaces - -Regular text. - - the lines in this block - all contain trailing spaces - -Regular Text. - - code block on the last line diff --git a/test/tests/code_spans.html b/test/tests/code_spans.html deleted file mode 100644 index 860e97c9f2..0000000000 --- a/test/tests/code_spans.html +++ /dev/null @@ -1,6 +0,0 @@ -

<test a=" content of attribute ">

- -

Fix for backticks within HTML tag: like this

- -

Here's how you put `backticks` in a code span.

- diff --git a/test/tests/code_spans.md b/test/tests/code_spans.md deleted file mode 100644 index 750a1973df..0000000000 --- a/test/tests/code_spans.md +++ /dev/null @@ -1,6 +0,0 @@ -`` - -Fix for backticks within HTML tag: like this - -Here's how you put `` `backticks` `` in a code span. - diff --git a/test/tests/def_blocks.html b/test/tests/def_blocks.html deleted file mode 100644 index ec0d11934d..0000000000 --- a/test/tests/def_blocks.html +++ /dev/null @@ -1,30 +0,0 @@ -
-

hello -[1]: hello

-
- -
- -
-

hello -[2]: hello

-
- - -
    -
  • hello
  • -
  • [3]: hello
  • -
- - -
    -
  • hello
  • -
- - -
-

foo -bar -[1]: foo -bar

-
diff --git a/test/tests/def_blocks.md b/test/tests/def_blocks.md deleted file mode 100644 index 4d16292987..0000000000 --- a/test/tests/def_blocks.md +++ /dev/null @@ -1,21 +0,0 @@ -> hello -> [1]: hello - -* * * - -> hello -[2]: hello - - -* hello -* [3]: hello - - -* hello -[4]: hello - - -> foo -> bar -[1]: foo -> bar diff --git a/test/tests/double_link.html b/test/tests/double_link.html deleted file mode 100644 index ff68395a3a..0000000000 --- a/test/tests/double_link.html +++ /dev/null @@ -1,5 +0,0 @@ -

Already linked: http://example.com/.

- -

Already linked: http://example.com/.

- -

Already linked: http://example.com/.

diff --git a/test/tests/double_link.md b/test/tests/double_link.md deleted file mode 100644 index 50216736c1..0000000000 --- a/test/tests/double_link.md +++ /dev/null @@ -1,5 +0,0 @@ -

Already linked: http://example.com/.

- -Already linked: [http://example.com/](http://example.com/). - -Already linked: **http://example.com/**. diff --git a/test/tests/escaped_angles.html b/test/tests/escaped_angles.html deleted file mode 100644 index 7cf47c49ee..0000000000 --- a/test/tests/escaped_angles.html +++ /dev/null @@ -1 +0,0 @@ -

>

diff --git a/test/tests/escaped_angles.md b/test/tests/escaped_angles.md deleted file mode 100644 index db7422f13f..0000000000 --- a/test/tests/escaped_angles.md +++ /dev/null @@ -1 +0,0 @@ -\> diff --git a/test/tests/gfm_break.breaks.html b/test/tests/gfm_break.breaks.html deleted file mode 100644 index 398ba018ce..0000000000 --- a/test/tests/gfm_break.breaks.html +++ /dev/null @@ -1 +0,0 @@ -

Look at the
pretty line
breaks.

diff --git a/test/tests/gfm_break.breaks.md b/test/tests/gfm_break.breaks.md deleted file mode 100644 index 71097d23bc..0000000000 --- a/test/tests/gfm_break.breaks.md +++ /dev/null @@ -1,3 +0,0 @@ -Look at the -pretty line -breaks. diff --git a/test/tests/gfm_code.html b/test/tests/gfm_code.html deleted file mode 100644 index 872ece776a..0000000000 --- a/test/tests/gfm_code.html +++ /dev/null @@ -1,10 +0,0 @@ -
var a = 'hello';
-console.log(a + ' world');
-
echo "hello, ${WORLD}"
-
Q: What do you call a tall person who sells stolen goods?
-
A longfence!
-

How about an empty code block?

-
-

How about a code block with only an empty line?

-

-
diff --git a/test/tests/gfm_code.md b/test/tests/gfm_code.md deleted file mode 100644 index ca46c1fed1..0000000000 --- a/test/tests/gfm_code.md +++ /dev/null @@ -1,27 +0,0 @@ -``` js -var a = 'hello'; -console.log(a + ' world'); -``` - -~~~bash -echo "hello, ${WORLD}" -~~~ - -```````longfence -Q: What do you call a tall person who sells stolen goods? -``````` - -~~~~~~~~~~ ManyTildes -A longfence! -~~~~~~~~~~ - -How about an empty code block? - -```js -``` - -How about a code block with only an empty line? - -```js - -``` diff --git a/test/tests/gfm_code_hr_list.html b/test/tests/gfm_code_hr_list.html deleted file mode 100644 index 9fbd0fb9dd..0000000000 --- a/test/tests/gfm_code_hr_list.html +++ /dev/null @@ -1,52 +0,0 @@ -

foo

-
    -
  1. bar:

    -
    -
      -
    • one
        -
      • two
          -
        • three
        • -
        • four
        • -
        • five
        • -
        -
      • -
      -
    • -
    -
    -
  2. -
  3. foo:

    -
     line 1
    - line 2
    -
  4. -
  5. foo:

    -
      -
    1. foo bar bar:

      -
       some code here
      -
      -
    2. -
    3. foo bar bar:

      -
       foo
      - ---
      - bar
      - ---
      - foo
      - bar
      -
    4. -
    5. foo bar bar:

      -
       ---
      - foo
      - foo
      - ---
      - bar
      -
    6. -
    7. foo bar bar:

      -
       foo
      - ---
      - bar
      -
    8. -
    9. foo

      -
    10. -
    -
  6. -
diff --git a/test/tests/gfm_code_hr_list.md b/test/tests/gfm_code_hr_list.md deleted file mode 100644 index 0eba40598f..0000000000 --- a/test/tests/gfm_code_hr_list.md +++ /dev/null @@ -1,53 +0,0 @@ -## foo - -1. bar: - - > - one - - two - - three - - four - - five - -1. foo: - - ``` - line 1 - line 2 - ``` - -1. foo: - - 1. foo `bar` bar: - - ``` erb - some code here - ``` - - 2. foo `bar` bar: - - ``` erb - foo - --- - bar - --- - foo - bar - ``` - - 3. foo `bar` bar: - - ``` html - --- - foo - foo - --- - bar - ``` - - 4. foo `bar` bar: - - foo - --- - bar - - 5. foo diff --git a/test/tests/gfm_del.html b/test/tests/gfm_del.html deleted file mode 100644 index 95e9ec74be..0000000000 --- a/test/tests/gfm_del.html +++ /dev/null @@ -1 +0,0 @@ -

hello hi world

diff --git a/test/tests/gfm_del.md b/test/tests/gfm_del.md deleted file mode 100644 index d29ca77d41..0000000000 --- a/test/tests/gfm_del.md +++ /dev/null @@ -1 +0,0 @@ -hello ~~hi~~ world diff --git a/test/tests/gfm_em.html b/test/tests/gfm_em.html deleted file mode 100644 index 8fac3466aa..0000000000 --- a/test/tests/gfm_em.html +++ /dev/null @@ -1 +0,0 @@ -

These words should_not_be_emphasized.

diff --git a/test/tests/gfm_em.md b/test/tests/gfm_em.md deleted file mode 100644 index 6319874b90..0000000000 --- a/test/tests/gfm_em.md +++ /dev/null @@ -1 +0,0 @@ -These words should_not_be_emphasized. diff --git a/test/tests/gfm_hashtag.gfm.html b/test/tests/gfm_hashtag.gfm.html deleted file mode 100644 index 6f9e43f52d..0000000000 --- a/test/tests/gfm_hashtag.gfm.html +++ /dev/null @@ -1,5 +0,0 @@ -

#header

- -

header1

- -

header2

diff --git a/test/tests/gfm_hashtag.gfm.md b/test/tests/gfm_hashtag.gfm.md deleted file mode 100644 index 7656ecfd7c..0000000000 --- a/test/tests/gfm_hashtag.gfm.md +++ /dev/null @@ -1,5 +0,0 @@ -#header - -# header1 - -# header2 diff --git a/test/tests/gfm_hashtag.nogfm.html b/test/tests/gfm_hashtag.nogfm.html deleted file mode 100644 index ecd95d692e..0000000000 --- a/test/tests/gfm_hashtag.nogfm.html +++ /dev/null @@ -1,5 +0,0 @@ -

header

- -

header1

- -

header2

diff --git a/test/tests/gfm_hashtag.nogfm.md b/test/tests/gfm_hashtag.nogfm.md deleted file mode 100644 index 7656ecfd7c..0000000000 --- a/test/tests/gfm_hashtag.nogfm.md +++ /dev/null @@ -1,5 +0,0 @@ -#header - -# header1 - -# header2 diff --git a/test/tests/gfm_links.html b/test/tests/gfm_links.html deleted file mode 100644 index 4f62ae1de6..0000000000 --- a/test/tests/gfm_links.html +++ /dev/null @@ -1,2 +0,0 @@ -

This should be a link: -http://example.com/hello-world.

diff --git a/test/tests/gfm_links.md b/test/tests/gfm_links.md deleted file mode 100644 index c1336661a9..0000000000 --- a/test/tests/gfm_links.md +++ /dev/null @@ -1 +0,0 @@ -This should be a link: http://example.com/hello-world. diff --git a/test/tests/gfm_tables.html b/test/tests/gfm_tables.html deleted file mode 100644 index 70bec827e3..0000000000 --- a/test/tests/gfm_tables.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - -
Heading 1Heading 2
Cell 1Cell 2
Cell 3Cell 4
- - - - - - - - -
Header 1Header 2Header 3Header 4
Cell 1Cell 2Cell 3Cell 4
Cell 5Cell 6Cell 7Cell 8
-
Test code
- - - - - - - - -
Header 1Header 2
Cell 1Cell 2
Cell 3Cell 4
- - - - - - - - -
Header 1Header 2Header 3Header 4
Cell 1Cell 2Cell 3Cell 4
Cell 5Cell 6Cell 7Cell 8
diff --git a/test/tests/gfm_tables.md b/test/tests/gfm_tables.md deleted file mode 100644 index 5fd6321c1d..0000000000 --- a/test/tests/gfm_tables.md +++ /dev/null @@ -1,21 +0,0 @@ -| Heading 1 | Heading 2 -| --------- | --------- -| Cell 1 | Cell 2 -| Cell 3 | Cell 4 - -| Header 1 | Header 2 | Header 3 | Header 4 | -| :------: | -------: | :------- | -------- | -| Cell 1 | Cell 2 | Cell 3 | Cell 4 | -| Cell 5 | Cell 6 | Cell 7 | Cell 8 | - - Test code - -Header 1 | Header 2 --------- | -------- -Cell 1 | Cell 2 -Cell 3 | Cell 4 - -Header 1|Header 2|Header 3|Header 4 -:-------|:------:|-------:|-------- -Cell 1 |Cell 2 |Cell 3 |Cell 4 -*Cell 5*|Cell 6 |Cell 7 |Cell 8 diff --git a/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.html b/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.html deleted file mode 100644 index 53662fc1b5..0000000000 --- a/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.html +++ /dev/null @@ -1,8 +0,0 @@ -

In Markdown 1.0.0 and earlier. Version -8. This line turns into a list item. -Because a hard-wrapped line in the -middle of a paragraph looked like a -list item.

- -

Here's one with a bullet. -* criminey.

diff --git a/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md b/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md deleted file mode 100644 index f8a5b27bf4..0000000000 --- a/test/tests/hard_wrapped_paragraphs_with_list_like_lines.nogfm.md +++ /dev/null @@ -1,8 +0,0 @@ -In Markdown 1.0.0 and earlier. Version -8. This line turns into a list item. -Because a hard-wrapped line in the -middle of a paragraph looked like a -list item. - -Here's one with a bullet. -* criminey. diff --git a/test/tests/horizontal_rules.html b/test/tests/horizontal_rules.html deleted file mode 100644 index e60d4ba253..0000000000 --- a/test/tests/horizontal_rules.html +++ /dev/null @@ -1,71 +0,0 @@ -

Dashes:

- -
- -
- -
- -
- -
---
-
- -
- -
- -
- -
- -
- - -
-
- -

Asterisks:

- -
- -
- -
- -
- -
***
-
- -
- -
- -
- -
- -
* * *
-
- -

Underscores:

- -
- -
- -
- -
- -
___
-
- -
- -
- -
- -
- -
_ _ _
-
diff --git a/test/tests/horizontal_rules.md b/test/tests/horizontal_rules.md deleted file mode 100644 index 1594bda27b..0000000000 --- a/test/tests/horizontal_rules.md +++ /dev/null @@ -1,67 +0,0 @@ -Dashes: - ---- - - --- - - --- - - --- - - --- - -- - - - - - - - - - - - - - - - - - - - - - - - - -Asterisks: - -*** - - *** - - *** - - *** - - *** - -* * * - - * * * - - * * * - - * * * - - * * * - - -Underscores: - -___ - - ___ - - ___ - - ___ - - ___ - -_ _ _ - - _ _ _ - - _ _ _ - - _ _ _ - - _ _ _ diff --git a/test/tests/hr_list_break.html b/test/tests/hr_list_break.html deleted file mode 100644 index bd3ad1f7cc..0000000000 --- a/test/tests/hr_list_break.html +++ /dev/null @@ -1,10 +0,0 @@ -
    -
  • hello -world
  • -
  • how -are
  • -
- -
- -

you today?

diff --git a/test/tests/hr_list_break.md b/test/tests/hr_list_break.md deleted file mode 100644 index 036fe47943..0000000000 --- a/test/tests/hr_list_break.md +++ /dev/null @@ -1,6 +0,0 @@ -* hello -world -* how -are -* * * -you today? diff --git a/test/tests/inline_html_advanced.html b/test/tests/inline_html_advanced.html deleted file mode 100644 index 3af9cafb1a..0000000000 --- a/test/tests/inline_html_advanced.html +++ /dev/null @@ -1,15 +0,0 @@ -

Simple block on one line:

- -
foo
- -

And nested without indentation:

- -
-
-
-foo -
-
-
-
bar
-
diff --git a/test/tests/inline_html_advanced.md b/test/tests/inline_html_advanced.md deleted file mode 100644 index 86b7206d2a..0000000000 --- a/test/tests/inline_html_advanced.md +++ /dev/null @@ -1,15 +0,0 @@ -Simple block on one line: - -
foo
- -And nested without indentation: - -
-
-
-foo -
-
-
-
bar
-
diff --git a/test/tests/inline_html_comments.html b/test/tests/inline_html_comments.html deleted file mode 100644 index 3f167a1610..0000000000 --- a/test/tests/inline_html_comments.html +++ /dev/null @@ -1,13 +0,0 @@ -

Paragraph one.

- - - - - -

Paragraph two.

- - - -

The end.

diff --git a/test/tests/inline_html_comments.md b/test/tests/inline_html_comments.md deleted file mode 100644 index 41d830d038..0000000000 --- a/test/tests/inline_html_comments.md +++ /dev/null @@ -1,13 +0,0 @@ -Paragraph one. - - - - - -Paragraph two. - - - -The end. diff --git a/test/tests/inline_html_simple.html b/test/tests/inline_html_simple.html deleted file mode 100644 index 35c827ddb7..0000000000 --- a/test/tests/inline_html_simple.html +++ /dev/null @@ -1,72 +0,0 @@ -

Here's a simple block:

- -
- foo -
- -

This should be a code block, though:

- -
<div>
-    foo
-</div>
-
- -

As should this:

- -
<div>foo</div>
-
- -

Now, nested:

- -
-
-
- foo -
-
-
- -

This should just be an HTML comment:

- - - -

Multiline:

- - - -

Code block:

- -
<!-- Comment -->
-
- -

Just plain comment, with trailing spaces on the line:

- - - -

Code:

- -
<hr>
-
- -

Hr's:

- -
- -
- -
- -
- -
- -
- -
- -
- -
diff --git a/test/tests/inline_html_simple.md b/test/tests/inline_html_simple.md deleted file mode 100644 index df49d7bf97..0000000000 --- a/test/tests/inline_html_simple.md +++ /dev/null @@ -1,69 +0,0 @@ -Here's a simple block: - -
- foo -
- -This should be a code block, though: - -
- foo -
- -As should this: - -
foo
- -Now, nested: - -
-
-
- foo -
-
-
- -This should just be an HTML comment: - - - -Multiline: - - - -Code block: - - - -Just plain comment, with trailing spaces on the line: - - - -Code: - -
- -Hr's: - -
- -
- -
- -
- -
- -
- -
- -
- -
- diff --git a/test/tests/lazy_blockquotes.html b/test/tests/lazy_blockquotes.html deleted file mode 100644 index a701d42af9..0000000000 --- a/test/tests/lazy_blockquotes.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

hi there -bud

-
diff --git a/test/tests/lazy_blockquotes.md b/test/tests/lazy_blockquotes.md deleted file mode 100644 index c0e0b15496..0000000000 --- a/test/tests/lazy_blockquotes.md +++ /dev/null @@ -1,2 +0,0 @@ -> hi there -bud diff --git a/test/tests/links.sanitize.html b/test/tests/links.sanitize.html deleted file mode 100644 index 58d6f5ea38..0000000000 --- a/test/tests/links.sanitize.html +++ /dev/null @@ -1,5 +0,0 @@ -

-

-

-

-

\ No newline at end of file diff --git a/test/tests/links.sanitize.md b/test/tests/links.sanitize.md deleted file mode 100644 index ba5d09fed7..0000000000 --- a/test/tests/links.sanitize.md +++ /dev/null @@ -1,9 +0,0 @@ -[URL](javascript:alert) - -[URL](vbscript:alert) - -[URL](javascript:alert(1)) - -[URL](javascript:document;alert(1)) - -[URL](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) \ No newline at end of file diff --git a/test/tests/links_inline_style.html b/test/tests/links_inline_style.html deleted file mode 100644 index 09df236ed7..0000000000 --- a/test/tests/links_inline_style.html +++ /dev/null @@ -1,15 +0,0 @@ -

Just a URL.

- -

URL and title.

- -

URL and title.

- -

URL and title.

- -

URL and title.

- -

URL and title.

- -

URL and title.

- -

Empty.

diff --git a/test/tests/links_inline_style.md b/test/tests/links_inline_style.md deleted file mode 100644 index 8c8eb4902e..0000000000 --- a/test/tests/links_inline_style.md +++ /dev/null @@ -1,15 +0,0 @@ -Just a [URL](/url/). - -[URL and title](/url/ "title"). - -[URL and title](/url/ "title preceded by two spaces"). - -[URL and title](/url/ "title preceded by a tab"). - -[URL and title](/url/ "title has spaces afterward" ). - -[URL and title]( /url/has space ). - -[URL and title]( /url/has space/ "url has space and title"). - -[Empty](). diff --git a/test/tests/links_reference_style.html b/test/tests/links_reference_style.html deleted file mode 100644 index 2ec1b41f21..0000000000 --- a/test/tests/links_reference_style.html +++ /dev/null @@ -1,62 +0,0 @@ -

Foo bar.

- -

Foo bar.

- -

Foo bar.

- -

With embedded [brackets].

- -

Indented once.

- -

Indented twice.

- -

Indented thrice.

- -

Indented [four][] times.

- -
[four]: /url
-
- -
- -

this should work

- -

So should this.

- -

And this.

- -

And this.

- -

And this.

- -

But not [that] [].

- -

Nor [that][].

- -

Nor [that].

- -

[Something in brackets like this should work]

- -

[Same with this.]

- -

In this case, this points to something else.

- -

Backslashing should suppress [this] and [this].

- -

A link reference definition cannot interrupt a paragraph. -[bar]: /baz

-

[bar]

- -

However, it can directly follow other block elements, such as headings

-

Foo

-
-

bar

-
- -
- -

Here's one where the link -breaks across lines.

- -

Here's another where the link -breaks across lines, but with a line-ending space.

diff --git a/test/tests/links_reference_style.md b/test/tests/links_reference_style.md deleted file mode 100644 index 39aa93bbae..0000000000 --- a/test/tests/links_reference_style.md +++ /dev/null @@ -1,81 +0,0 @@ -Foo [bar] [1]. - -Foo [bar][1]. - -Foo [bar] -[1]. - -[1]: /url/ "Title" - - -With [embedded [brackets]] [b]. - - -Indented [once][]. - -Indented [twice][]. - -Indented [thrice][]. - -Indented [four][] times. - - [once]: /url - - [twice]: /url - - [thrice]: /url - - [four]: /url - - -[b]: /url/ - -* * * - -[this] [this] should work - -So should [this][this]. - -And [this] []. - -And [this][]. - -And [this]. - -But not [that] []. - -Nor [that][]. - -Nor [that]. - -[Something in brackets like [this][] should work] - -[Same with [this].] - -In this case, [this](/somethingelse/) points to something else. - -Backslashing should suppress \[this] and [this\]. - -[this]: foo - -A link reference definition cannot interrupt a paragraph. -[bar]: /baz - -[bar] - -However, it can directly follow other block elements, such as headings - -# [Foo] -[foo]: /url -> bar - -* * * - -Here's one where the [link -breaks] across lines. - -Here's another where the [link -breaks] across lines, but with a line-ending space. - - -[link breaks]: /url/ diff --git a/test/tests/links_shortcut_references.html b/test/tests/links_shortcut_references.html deleted file mode 100644 index bf81e939f5..0000000000 --- a/test/tests/links_shortcut_references.html +++ /dev/null @@ -1,9 +0,0 @@ -

This is the simple case.

- -

This one has a line -break.

- -

This one has a line -break with a line-ending space.

- -

this and the other

diff --git a/test/tests/links_shortcut_references.md b/test/tests/links_shortcut_references.md deleted file mode 100644 index 8c44c98fee..0000000000 --- a/test/tests/links_shortcut_references.md +++ /dev/null @@ -1,20 +0,0 @@ -This is the [simple case]. - -[simple case]: /simple - - - -This one has a [line -break]. - -This one has a [line -break] with a line-ending space. - -[line break]: /foo - - -[this] [that] and the [other] - -[this]: /this -[that]: /that -[other]: /other diff --git a/test/tests/list_item_text.html b/test/tests/list_item_text.html deleted file mode 100644 index 142df366ef..0000000000 --- a/test/tests/list_item_text.html +++ /dev/null @@ -1 +0,0 @@ -
  • item1

    • item2

    text

diff --git a/test/tests/list_item_text.md b/test/tests/list_item_text.md deleted file mode 100644 index a8f81b1404..0000000000 --- a/test/tests/list_item_text.md +++ /dev/null @@ -1,5 +0,0 @@ - * item1 - - * item2 - - text diff --git a/test/tests/literal_quotes_in_titles.html b/test/tests/literal_quotes_in_titles.html deleted file mode 100644 index 611c1ac61f..0000000000 --- a/test/tests/literal_quotes_in_titles.html +++ /dev/null @@ -1,3 +0,0 @@ -

Foo bar.

- -

Foo bar.

diff --git a/test/tests/literal_quotes_in_titles.md b/test/tests/literal_quotes_in_titles.md deleted file mode 100644 index 29d0e4235b..0000000000 --- a/test/tests/literal_quotes_in_titles.md +++ /dev/null @@ -1,7 +0,0 @@ -Foo [bar][]. - -Foo [bar](/url/ "Title with "quotes" inside"). - - - [bar]: /url/ "Title with "quotes" inside" - diff --git a/test/tests/loose_lists.html b/test/tests/loose_lists.html deleted file mode 100644 index c1bd82a26a..0000000000 --- a/test/tests/loose_lists.html +++ /dev/null @@ -1,62 +0,0 @@ -
    -
  • hello -world

    - -

    how -are

  • -
  • you
  • -
- - - -

better behavior:

- -
  • hello

    • world -how

      are -you

    • today

  • hi
- - - -
    -
  • hello

  • -
  • world

  • -
  • hi
  • -
- - - -
    -
  • hello
  • -
  • world

  • -
  • hi

  • -
- - - -
    -
  • hello
  • -
  • world

    - -

    how

  • -
  • hi
  • -
- - - -
    -
  • hello
  • -
  • world
  • -
  • how

    - -

    are

  • -
- - - -
    -
  • hello
  • -
  • world

  • -
  • how

    - -

    are

  • -
diff --git a/test/tests/loose_lists.md b/test/tests/loose_lists.md deleted file mode 100644 index cb360a15d7..0000000000 --- a/test/tests/loose_lists.md +++ /dev/null @@ -1,59 +0,0 @@ -* hello - world - - how - are -* you - - - -better behavior: - -* hello - * world - how - - are - you - - * today -* hi - - - -* hello - -* world -* hi - - - -* hello -* world - -* hi - - - -* hello -* world - - how -* hi - - - -* hello -* world -* how - - are - - - -* hello -* world - -* how - - are diff --git a/test/tests/main.html b/test/tests/main.html deleted file mode 100644 index 8f78c4d30e..0000000000 --- a/test/tests/main.html +++ /dev/null @@ -1,4 +0,0 @@ -

A heading

Just a note, I've found that I can't test my markdown parser vs others. For example, both markdown.js and showdown code blocks in lists wrong. They're also completely inconsistent with regards to paragraphs in list items.

A link. Not anymore.

  • List Item 1

  • List Item 2

    • New List Item 1 Hi, this is a list item.
    • New List Item 2 Another item
      Code goes here.
      -Lots of it...
    • New List Item 3 The last item
  • List Item 3 The final item.

  • List Item 4 The real final item.

Paragraph.

  • bq Item 1
  • bq Item 2
    • New bq Item 1
    • New bq Item 2 Text here

Another blockquote! I really need to get more creative with mockup text.. markdown.js breaks here again

Another Heading

Hello world. Here is a link. And an image alt.

Code goes here.
-Lots of it...
diff --git a/test/tests/main.md b/test/tests/main.md deleted file mode 100644 index 58e17a6a76..0000000000 --- a/test/tests/main.md +++ /dev/null @@ -1,55 +0,0 @@ -[test]: http://google.com/ "Google" - -# A heading - -Just a note, I've found that I can't test my markdown parser vs others. -For example, both markdown.js and showdown code blocks in lists wrong. They're -also completely [inconsistent][test] with regards to paragraphs in list items. - -A link. Not anymore. - - - -* List Item 1 - -* List Item 2 - * New List Item 1 - Hi, this is a list item. - * New List Item 2 - Another item - Code goes here. - Lots of it... - * New List Item 3 - The last item - -* List Item 3 -The final item. - -* List Item 4 -The real final item. - -Paragraph. - -> * bq Item 1 -> * bq Item 2 -> * New bq Item 1 -> * New bq Item 2 -> Text here - -* * * - -> Another blockquote! -> I really need to get -> more creative with -> mockup text.. -> markdown.js breaks here again - -Another Heading -------------- - -Hello *world*. Here is a [link](//hello). -And an image ![alt](src). - - Code goes here. - Lots of it... diff --git a/test/tests/mangle_xss.sanatize.nomangle.html b/test/tests/mangle_xss.sanatize.nomangle.html deleted file mode 100644 index 9f87f09a43..0000000000 --- a/test/tests/mangle_xss.sanatize.nomangle.html +++ /dev/null @@ -1,3 +0,0 @@ -

<svg/onload="alert(1)"//@x

- -

bar"onclick="alert('XSS')"@foo

diff --git a/test/tests/mangle_xss.sanatize.nomangle.md b/test/tests/mangle_xss.sanatize.nomangle.md deleted file mode 100644 index c44503da00..0000000000 --- a/test/tests/mangle_xss.sanatize.nomangle.md +++ /dev/null @@ -1,3 +0,0 @@ -< - - diff --git a/test/tests/markdown_documentation_basics.html b/test/tests/markdown_documentation_basics.html deleted file mode 100644 index aadbce2bb8..0000000000 --- a/test/tests/markdown_documentation_basics.html +++ /dev/null @@ -1,314 +0,0 @@ -

Markdown: Basics

- - - -

Getting the Gist of Markdown's Formatting Syntax

- -

This page offers a brief overview of what it's like to use Markdown. -The syntax page provides complete, detailed documentation for -every feature, but Markdown should be very easy to pick up simply by -looking at a few examples of it in action. The examples on this page -are written in a before/after style, showing example syntax and the -HTML output produced by Markdown.

- -

It's also helpful to simply try Markdown out; the Dingus is a -web application that allows you type your own Markdown-formatted text -and translate it to XHTML.

- -

Note: This document is itself written using Markdown; you -can see the source for it by adding '.text' to the URL.

- -

Paragraphs, Headers, Blockquotes

- -

A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs.

- -

Markdown offers two styles of headers: Setext and atx. -Setext-style headers for <h1> and <h2> are created by -"underlining" with equal signs (=) and hyphens (-), respectively. -To create an atx-style header, you put 1-6 hash marks (#) at the -beginning of the line -- the number of hashes equals the resulting -HTML header level.

- -

Blockquotes are indicated using email-style '>' angle brackets.

- -

Markdown:

- -
A First Level Header
-====================
-
-A Second Level Header
----------------------
-
-Now is the time for all good men to come to
-the aid of their country. This is just a
-regular paragraph.
-
-The quick brown fox jumped over the lazy
-dog's back.
-
-### Header 3
-
-> This is a blockquote.
-> 
-> This is the second paragraph in the blockquote.
->
-> ## This is an H2 in a blockquote
-
- -

Output:

- -
<h1>A First Level Header</h1>
-
-<h2>A Second Level Header</h2>
-
-<p>Now is the time for all good men to come to
-the aid of their country. This is just a
-regular paragraph.</p>
-
-<p>The quick brown fox jumped over the lazy
-dog's back.</p>
-
-<h3>Header 3</h3>
-
-<blockquote>
-    <p>This is a blockquote.</p>
-
-    <p>This is the second paragraph in the blockquote.</p>
-
-    <h2>This is an H2 in a blockquote</h2>
-</blockquote>
-
- -

Phrase Emphasis

- -

Markdown uses asterisks and underscores to indicate spans of emphasis.

- -

Markdown:

- -
Some of these words *are emphasized*.
-Some of these words _are emphasized also_.
-
-Use two asterisks for **strong emphasis**.
-Or, if you prefer, __use two underscores instead__.
-
- -

Output:

- -
<p>Some of these words <em>are emphasized</em>.
-Some of these words <em>are emphasized also</em>.</p>
-
-<p>Use two asterisks for <strong>strong emphasis</strong>.
-Or, if you prefer, <strong>use two underscores instead</strong>.</p>
-
- -

Lists

- -

Unordered (bulleted) lists use asterisks, pluses, and hyphens (*, -+, and -) as list markers. These three markers are -interchangable; this:

- -
*   Candy.
-*   Gum.
-*   Booze.
-
- -

this:

- -
+   Candy.
-+   Gum.
-+   Booze.
-
- -

and this:

- -
-   Candy.
--   Gum.
--   Booze.
-
- -

all produce the same output:

- -
<ul>
-<li>Candy.</li>
-<li>Gum.</li>
-<li>Booze.</li>
-</ul>
-
- -

Ordered (numbered) lists use regular numbers, followed by periods, as -list markers:

- -
1.  Red
-2.  Green
-3.  Blue
-
- -

Output:

- -
<ol>
-<li>Red</li>
-<li>Green</li>
-<li>Blue</li>
-</ol>
-
- -

If you put blank lines between items, you'll get <p> tags for the -list item text. You can create multi-paragraph list items by indenting -the paragraphs by 4 spaces or 1 tab:

- -
*   A list item.
-
-    With multiple paragraphs.
-
-*   Another item in the list.
-
- -

Output:

- -
<ul>
-<li><p>A list item.</p>
-<p>With multiple paragraphs.</p></li>
-<li><p>Another item in the list.</p></li>
-</ul>
-
- - - -

Markdown supports two styles for creating links: inline and -reference. With both styles, you use square brackets to delimit the -text you want to turn into a link.

- -

Inline-style links use parentheses immediately after the link text. -For example:

- -
This is an [example link](http://example.com/).
-
- -

Output:

- -
<p>This is an <a href="http://example.com/">
-example link</a>.</p>
-
- -

Optionally, you may include a title attribute in the parentheses:

- -
This is an [example link](http://example.com/ "With a Title").
-
- -

Output:

- -
<p>This is an <a href="http://example.com/" title="With a Title">
-example link</a>.</p>
-
- -

Reference-style links allow you to refer to your links by names, which -you define elsewhere in your document:

- -
I get 10 times more traffic from [Google][1] than from
-[Yahoo][2] or [MSN][3].
-
-[1]: http://google.com/        "Google"
-[2]: http://search.yahoo.com/  "Yahoo Search"
-[3]: http://search.msn.com/    "MSN Search"
-
- -

Output:

- -
<p>I get 10 times more traffic from <a href="http://google.com/"
-title="Google">Google</a> than from <a href="http://search.yahoo.com/"
-title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
-title="MSN Search">MSN</a>.</p>
-
- -

The title attribute is optional. Link names may contain letters, -numbers and spaces, but are not case sensitive:

- -
I start my morning with a cup of coffee and
-[The New York Times][NY Times].
-
-[ny times]: http://www.nytimes.com/
-
- -

Output:

- -
<p>I start my morning with a cup of coffee and
-<a href="http://www.nytimes.com/">The New York Times</a>.</p>
-
- -

Images

- -

Image syntax is very much like link syntax.

- -

Inline (titles are optional):

- -
![alt text](/path/to/img.jpg "Title")
-
- -

Reference-style:

- -
![alt text][id]
-
-[id]: /path/to/img.jpg "Title"
-
- -

Both of the above examples produce the same output:

- -
<img src="/path/to/img.jpg" alt="alt text" title="Title" />
-
- -

Code

- -

In a regular paragraph, you can create code span by wrapping text in -backtick quotes. Any ampersands (&) and angle brackets (< or ->) will automatically be translated into HTML entities. This makes -it easy to use Markdown to write about HTML example code:

- -
I strongly recommend against using any `<blink>` tags.
-
-I wish SmartyPants used named entities like `&mdash;`
-instead of decimal-encoded entites like `&#8212;`.
-
- -

Output:

- -
<p>I strongly recommend against using any
-<code>&lt;blink&gt;</code> tags.</p>
-
-<p>I wish SmartyPants used named entities like
-<code>&amp;mdash;</code> instead of decimal-encoded
-entites like <code>&amp;#8212;</code>.</p>
-
- -

To specify an entire block of pre-formatted code, indent every line of -the block by 4 spaces or 1 tab. Just like with code spans, &, <, -and > characters will be escaped automatically.

- -

Markdown:

- -
If you want your page to validate under XHTML 1.0 Strict,
-you've got to put paragraph tags in your blockquotes:
-
-    <blockquote>
-        <p>For example.</p>
-    </blockquote>
-
- -

Output:

- -
<p>If you want your page to validate under XHTML 1.0 Strict,
-you've got to put paragraph tags in your blockquotes:</p>
-
-<pre><code>&lt;blockquote&gt;
-    &lt;p&gt;For example.&lt;/p&gt;
-&lt;/blockquote&gt;
-</code></pre>
-
diff --git a/test/tests/markdown_documentation_basics.md b/test/tests/markdown_documentation_basics.md deleted file mode 100644 index 486055ca7f..0000000000 --- a/test/tests/markdown_documentation_basics.md +++ /dev/null @@ -1,306 +0,0 @@ -Markdown: Basics -================ - - - - -Getting the Gist of Markdown's Formatting Syntax ------------------------------------------------- - -This page offers a brief overview of what it's like to use Markdown. -The [syntax page] [s] provides complete, detailed documentation for -every feature, but Markdown should be very easy to pick up simply by -looking at a few examples of it in action. The examples on this page -are written in a before/after style, showing example syntax and the -HTML output produced by Markdown. - -It's also helpful to simply try Markdown out; the [Dingus] [d] is a -web application that allows you type your own Markdown-formatted text -and translate it to XHTML. - -**Note:** This document is itself written using Markdown; you -can [see the source for it by adding '.text' to the URL] [src]. - - [s]: /projects/markdown/syntax "Markdown Syntax" - [d]: /projects/markdown/dingus "Markdown Dingus" - [src]: /projects/markdown/basics.text - - -## Paragraphs, Headers, Blockquotes ## - -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs. - -Markdown offers two styles of headers: *Setext* and *atx*. -Setext-style headers for `

` and `

` are created by -"underlining" with equal signs (`=`) and hyphens (`-`), respectively. -To create an atx-style header, you put 1-6 hash marks (`#`) at the -beginning of the line -- the number of hashes equals the resulting -HTML header level. - -Blockquotes are indicated using email-style '`>`' angle brackets. - -Markdown: - - A First Level Header - ==================== - - A Second Level Header - --------------------- - - Now is the time for all good men to come to - the aid of their country. This is just a - regular paragraph. - - The quick brown fox jumped over the lazy - dog's back. - - ### Header 3 - - > This is a blockquote. - > - > This is the second paragraph in the blockquote. - > - > ## This is an H2 in a blockquote - - -Output: - -

A First Level Header

- -

A Second Level Header

- -

Now is the time for all good men to come to - the aid of their country. This is just a - regular paragraph.

- -

The quick brown fox jumped over the lazy - dog's back.

- -

Header 3

- -
-

This is a blockquote.

- -

This is the second paragraph in the blockquote.

- -

This is an H2 in a blockquote

-
- - - -### Phrase Emphasis ### - -Markdown uses asterisks and underscores to indicate spans of emphasis. - -Markdown: - - Some of these words *are emphasized*. - Some of these words _are emphasized also_. - - Use two asterisks for **strong emphasis**. - Or, if you prefer, __use two underscores instead__. - -Output: - -

Some of these words are emphasized. - Some of these words are emphasized also.

- -

Use two asterisks for strong emphasis. - Or, if you prefer, use two underscores instead.

- - - -## Lists ## - -Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`, -`+`, and `-`) as list markers. These three markers are -interchangable; this: - - * Candy. - * Gum. - * Booze. - -this: - - + Candy. - + Gum. - + Booze. - -and this: - - - Candy. - - Gum. - - Booze. - -all produce the same output: - -
    -
  • Candy.
  • -
  • Gum.
  • -
  • Booze.
  • -
- -Ordered (numbered) lists use regular numbers, followed by periods, as -list markers: - - 1. Red - 2. Green - 3. Blue - -Output: - -
    -
  1. Red
  2. -
  3. Green
  4. -
  5. Blue
  6. -
- -If you put blank lines between items, you'll get `

` tags for the -list item text. You can create multi-paragraph list items by indenting -the paragraphs by 4 spaces or 1 tab: - - * A list item. - - With multiple paragraphs. - - * Another item in the list. - -Output: - -

    -
  • A list item.

    -

    With multiple paragraphs.

  • -
  • Another item in the list.

  • -
- - - -### Links ### - -Markdown supports two styles for creating links: *inline* and -*reference*. With both styles, you use square brackets to delimit the -text you want to turn into a link. - -Inline-style links use parentheses immediately after the link text. -For example: - - This is an [example link](http://example.com/). - -Output: - -

This is an - example link.

- -Optionally, you may include a title attribute in the parentheses: - - This is an [example link](http://example.com/ "With a Title"). - -Output: - -

This is an - example link.

- -Reference-style links allow you to refer to your links by names, which -you define elsewhere in your document: - - I get 10 times more traffic from [Google][1] than from - [Yahoo][2] or [MSN][3]. - - [1]: http://google.com/ "Google" - [2]: http://search.yahoo.com/ "Yahoo Search" - [3]: http://search.msn.com/ "MSN Search" - -Output: - -

I get 10 times more traffic from Google than from Yahoo or MSN.

- -The title attribute is optional. Link names may contain letters, -numbers and spaces, but are *not* case sensitive: - - I start my morning with a cup of coffee and - [The New York Times][NY Times]. - - [ny times]: http://www.nytimes.com/ - -Output: - -

I start my morning with a cup of coffee and - The New York Times.

- - -### Images ### - -Image syntax is very much like link syntax. - -Inline (titles are optional): - - ![alt text](/path/to/img.jpg "Title") - -Reference-style: - - ![alt text][id] - - [id]: /path/to/img.jpg "Title" - -Both of the above examples produce the same output: - - alt text - - - -### Code ### - -In a regular paragraph, you can create code span by wrapping text in -backtick quotes. Any ampersands (`&`) and angle brackets (`<` or -`>`) will automatically be translated into HTML entities. This makes -it easy to use Markdown to write about HTML example code: - - I strongly recommend against using any `` tags. - - I wish SmartyPants used named entities like `—` - instead of decimal-encoded entites like `—`. - -Output: - -

I strongly recommend against using any - <blink> tags.

- -

I wish SmartyPants used named entities like - &mdash; instead of decimal-encoded - entites like &#8212;.

- - -To specify an entire block of pre-formatted code, indent every line of -the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`, -and `>` characters will be escaped automatically. - -Markdown: - - If you want your page to validate under XHTML 1.0 Strict, - you've got to put paragraph tags in your blockquotes: - -
-

For example.

-
- -Output: - -

If you want your page to validate under XHTML 1.0 Strict, - you've got to put paragraph tags in your blockquotes:

- -
<blockquote>
-        <p>For example.</p>
-    </blockquote>
-    
diff --git a/test/tests/markdown_documentation_syntax.html b/test/tests/markdown_documentation_syntax.html deleted file mode 100644 index 40e083711a..0000000000 --- a/test/tests/markdown_documentation_syntax.html +++ /dev/null @@ -1,942 +0,0 @@ -

Markdown: Syntax

- - - - - -

Note: This document is itself written using Markdown; you -can see the source for it by adding '.text' to the URL.

- -
- -

Overview

- -

Philosophy

- -

Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

- -

Readability, however, is emphasized above all else. A Markdown-formatted -document should be publishable as-is, as plain text, without looking -like it's been marked up with tags or formatting instructions. While -Markdown's syntax has been influenced by several existing text-to-HTML -filters -- including Setext, atx, Textile, reStructuredText, -Grutatext, and EtText -- the single biggest source of -inspiration for Markdown's syntax is the format of plain text email.

- -

To this end, Markdown's syntax is comprised entirely of punctuation -characters, which punctuation characters have been carefully chosen so -as to look like what they mean. E.g., asterisks around a word actually -look like *emphasis*. Markdown lists look like, well, lists. Even -blockquotes look like quoted passages of text, assuming you've ever -used email.

- -

Inline HTML

- -

Markdown's syntax is intended for one purpose: to be used as a -format for writing for the web.

- -

Markdown is not a replacement for HTML, or even close to it. Its -syntax is very small, corresponding only to a very small subset of -HTML tags. The idea is not to create a syntax that makes it easier -to insert HTML tags. In my opinion, HTML tags are already easy to -insert. The idea for Markdown is to make it easy to read, write, and -edit prose. HTML is a publishing format; Markdown is a writing -format. Thus, Markdown's formatting syntax only addresses issues that -can be conveyed in plain text.

- -

For any markup that is not covered by Markdown's syntax, you simply -use HTML itself. There's no need to preface it or delimit it to -indicate that you're switching from Markdown to HTML; you just use -the tags.

- -

The only restrictions are that block-level HTML elements -- e.g. <div>, -<table>, <pre>, <p>, etc. -- must be separated from surrounding -content by blank lines, and the start and end tags of the block should -not be indented with tabs or spaces. Markdown is smart enough not -to add extra (unwanted) <p> tags around HTML block-level tags.

- -

For example, to add an HTML table to a Markdown article:

- -
This is a regular paragraph.
-
-<table>
-    <tr>
-        <td>Foo</td>
-    </tr>
-</table>
-
-This is another regular paragraph.
-
- -

Note that Markdown formatting syntax is not processed within block-level -HTML tags. E.g., you can't use Markdown-style *emphasis* inside an -HTML block.

- -

Span-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be -used anywhere in a Markdown paragraph, list item, or header. If you -want, you can even use HTML tags instead of Markdown formatting; e.g. if -you'd prefer to use HTML <a> or <img> tags instead of Markdown's -link or image syntax, go right ahead.

- -

Unlike block-level HTML tags, Markdown syntax is processed within -span-level tags.

- -

Automatic Escaping for Special Characters

- -

In HTML, there are two characters that demand special treatment: < -and &. Left angle brackets are used to start tags; ampersands are -used to denote HTML entities. If you want to use them as literal -characters, you must escape them as entities, e.g. &lt;, and -&amp;.

- -

Ampersands in particular are bedeviling for web writers. If you want to -write about 'AT&T', you need to write 'AT&amp;T'. You even need to -escape ampersands within URLs. Thus, if you want to link to:

- -
http://images.google.com/images?num=30&q=larry+bird
-
- -

you need to encode the URL as:

- -
http://images.google.com/images?num=30&amp;q=larry+bird
-
- -

in your anchor tag href attribute. Needless to say, this is easy to -forget, and is probably the single most common source of HTML validation -errors in otherwise well-marked-up web sites.

- -

Markdown allows you to use these characters naturally, taking care of -all the necessary escaping for you. If you use an ampersand as part of -an HTML entity, it remains unchanged; otherwise it will be translated -into &amp;.

- -

So, if you want to include a copyright symbol in your article, you can write:

- -
&copy;
-
- -

and Markdown will leave it alone. But if you write:

- -
AT&T
-
- -

Markdown will translate it to:

- -
AT&amp;T
-
- -

Similarly, because Markdown supports inline HTML, if you use -angle brackets as delimiters for HTML tags, Markdown will treat them as -such. But if you write:

- -
4 < 5
-
- -

Markdown will translate it to:

- -
4 &lt; 5
-
- -

However, inside Markdown code spans and blocks, angle brackets and -ampersands are always encoded automatically. This makes it easy to use -Markdown to write about HTML code. (As opposed to raw HTML, which is a -terrible format for writing about HTML syntax, because every single < -and & in your example code needs to be escaped.)

- -
- -

Block Elements

- -

Paragraphs and Line Breaks

- -

A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing but spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs.

- -

The implication of the "one or more consecutive lines of text" rule is -that Markdown supports "hard-wrapped" text paragraphs. This differs -significantly from most other text-to-HTML formatters (including Movable -Type's "Convert Line Breaks" option) which translate every line break -character in a paragraph into a <br /> tag.

- -

When you do want to insert a <br /> break tag using Markdown, you -end a line with two or more spaces, then type return.

- -

Yes, this takes a tad more effort to create a <br />, but a simplistic -"every line break is a <br />" rule wouldn't work for Markdown. -Markdown's email-style blockquoting and multi-paragraph list items -work best -- and look better -- when you format them with hard breaks.

- - - -

Markdown supports two styles of headers, Setext and atx.

- -

Setext-style headers are "underlined" using equal signs (for first-level -headers) and dashes (for second-level headers). For example:

- -
This is an H1
-=============
-
-This is an H2
--------------
-
- -

Any number of underlining ='s or -'s will work.

- -

Atx-style headers use 1-6 hash characters at the start of the line, -corresponding to header levels 1-6. For example:

- -
# This is an H1
-
-## This is an H2
-
-###### This is an H6
-
- -

Optionally, you may "close" atx-style headers. This is purely -cosmetic -- you can use this if you think it looks better. The -closing hashes don't even need to match the number of hashes -used to open the header. (The number of opening hashes -determines the header level.) :

- -
# This is an H1 #
-
-## This is an H2 ##
-
-### This is an H3 ######
-
- -

Blockquotes

- -

Markdown uses email-style > characters for blockquoting. If you're -familiar with quoting passages of text in an email message, then you -know how to create a blockquote in Markdown. It looks best if you hard -wrap the text and put a > before every line:

- -
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
-> 
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
-> id sem consectetuer libero luctus adipiscing.
-
- -

Markdown allows you to be lazy and only put the > before the first -line of a hard-wrapped paragraph:

- -
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
-
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
-id sem consectetuer libero luctus adipiscing.
-
- -

Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by -adding additional levels of >:

- -
> This is the first level of quoting.
->
-> > This is nested blockquote.
->
-> Back to the first level.
-
- -

Blockquotes can contain other Markdown elements, including headers, lists, -and code blocks:

- -
> ## This is a header.
-> 
-> 1.   This is the first list item.
-> 2.   This is the second list item.
-> 
-> Here's some example code:
-> 
->     return shell_exec("echo $input | $markdown_script");
-
- -

Any decent text editor should make email-style quoting easy. For -example, with BBEdit, you can make a selection and choose Increase -Quote Level from the Text menu.

- -

Lists

- -

Markdown supports ordered (numbered) and unordered (bulleted) lists.

- -

Unordered lists use asterisks, pluses, and hyphens -- interchangably --- as list markers:

- -
*   Red
-*   Green
-*   Blue
-
- -

is equivalent to:

- -
+   Red
-+   Green
-+   Blue
-
- -

and:

- -
-   Red
--   Green
--   Blue
-
- -

Ordered lists use numbers followed by periods:

- -
1.  Bird
-2.  McHale
-3.  Parish
-
- -

It's important to note that the actual numbers you use to mark the -list have no effect on the HTML output Markdown produces. The HTML -Markdown produces from the above list is:

- -
<ol>
-<li>Bird</li>
-<li>McHale</li>
-<li>Parish</li>
-</ol>
-
- -

If you instead wrote the list in Markdown like this:

- -
1.  Bird
-1.  McHale
-1.  Parish
-
- -

or even:

- -
3. Bird
-1. McHale
-8. Parish
-
- -

you'd get the exact same HTML output. The point is, if you want to, -you can use ordinal numbers in your ordered Markdown lists, so that -the numbers in your source match the numbers in your published HTML. -But if you want to be lazy, you don't have to.

- -

If you do use lazy list numbering, however, you should still start the -list with the number 1. At some point in the future, Markdown may support -starting ordered lists at an arbitrary number.

- -

List markers typically start at the left margin, but may be indented by -up to three spaces. List markers must be followed by one or more spaces -or a tab.

- -

To make lists look nice, you can wrap items with hanging indents:

- -
*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
-    viverra nec, fringilla in, laoreet vitae, risus.
-*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
-    Suspendisse id sem consectetuer libero luctus adipiscing.
-
- -

But if you want to be lazy, you don't have to:

- -
*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
-viverra nec, fringilla in, laoreet vitae, risus.
-*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
-Suspendisse id sem consectetuer libero luctus adipiscing.
-
- -

If list items are separated by blank lines, Markdown will wrap the -items in <p> tags in the HTML output. For example, this input:

- -
*   Bird
-*   Magic
-
- -

will turn into:

- -
<ul>
-<li>Bird</li>
-<li>Magic</li>
-</ul>
-
- -

But this:

- -
*   Bird
-
-*   Magic
-
- -

will turn into:

- -
<ul>
-<li><p>Bird</p></li>
-<li><p>Magic</p></li>
-</ul>
-
- -

List items may consist of multiple paragraphs. Each subsequent -paragraph in a list item must be intended by either 4 spaces -or one tab:

- -
1.  This is a list item with two paragraphs. Lorem ipsum dolor
-    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
-    mi posuere lectus.
-
-    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
-    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
-    sit amet velit.
-
-2.  Suspendisse id sem consectetuer libero luctus adipiscing.
-
- -

It looks nice if you indent every line of the subsequent -paragraphs, but here again, Markdown will allow you to be -lazy:

- -
*   This is a list item with two paragraphs.
-
-    This is the second paragraph in the list item. You're
-only required to indent the first line. Lorem ipsum dolor
-sit amet, consectetuer adipiscing elit.
-
-*   Another item in the same list.
-
- -

To put a blockquote within a list item, the blockquote's > -delimiters need to be indented:

- -
*   A list item with a blockquote:
-
-    > This is a blockquote
-    > inside a list item.
-
- -

To put a code block within a list item, the code block needs -to be indented twice -- 8 spaces or two tabs:

- -
*   A list item with a code block:
-
-        <code goes here>
-
- -

It's worth noting that it's possible to trigger an ordered list by -accident, by writing something like this:

- -
1986. What a great season.
-
- -

In other words, a number-period-space sequence at the beginning of a -line. To avoid this, you can backslash-escape the period:

- -
1986\. What a great season.
-
- -

Code Blocks

- -

Pre-formatted code blocks are used for writing about programming or -markup source code. Rather than forming normal paragraphs, the lines -of a code block are interpreted literally. Markdown wraps a code block -in both <pre> and <code> tags.

- -

To produce a code block in Markdown, simply indent every line of the -block by at least 4 spaces or 1 tab. For example, given this input:

- -
This is a normal paragraph:
-
-    This is a code block.
-
- -

Markdown will generate:

- -
<p>This is a normal paragraph:</p>
-
-<pre><code>This is a code block.
-</code></pre>
-
- -

One level of indentation -- 4 spaces or 1 tab -- is removed from each -line of the code block. For example, this:

- -
Here is an example of AppleScript:
-
-    tell application "Foo"
-        beep
-    end tell
-
- -

will turn into:

- -
<p>Here is an example of AppleScript:</p>
-
-<pre><code>tell application "Foo"
-    beep
-end tell
-</code></pre>
-
- -

A code block continues until it reaches a line that is not indented -(or the end of the article).

- -

Within a code block, ampersands (&) and angle brackets (< and >) -are automatically converted into HTML entities. This makes it very -easy to include example HTML source code using Markdown -- just paste -it and indent it, and Markdown will handle the hassle of encoding the -ampersands and angle brackets. For example, this:

- -
    <div class="footer">
-        &copy; 2004 Foo Corporation
-    </div>
-
- -

will turn into:

- -
<pre><code>&lt;div class="footer"&gt;
-    &amp;copy; 2004 Foo Corporation
-&lt;/div&gt;
-</code></pre>
-
- -

Regular Markdown syntax is not processed within code blocks. E.g., -asterisks are just literal asterisks within a code block. This means -it's also easy to use Markdown to write about Markdown's own syntax.

- -

Horizontal Rules

- -

You can produce a horizontal rule tag (<hr>) by placing three or -more hyphens, asterisks, or underscores on a line by themselves. If you -wish, you may use spaces between the hyphens or asterisks. Each of the -following lines will produce a horizontal rule:

- -
* * *
-
-***
-
-*****
-
-- - -
-
----------------------------------------
-
-_ _ _
-
- -
- -

Span Elements

- - - -

Markdown supports two style of links: inline and reference.

- -

In both styles, the link text is delimited by [square brackets].

- -

To create an inline link, use a set of regular parentheses immediately -after the link text's closing square bracket. Inside the parentheses, -put the URL where you want the link to point, along with an optional -title for the link, surrounded in quotes. For example:

- -
This is [an example](http://example.com/ "Title") inline link.
-
-[This link](http://example.net/) has no title attribute.
-
- -

Will produce:

- -
<p>This is <a href="http://example.com/" title="Title">
-an example</a> inline link.</p>
-
-<p><a href="http://example.net/">This link</a> has no
-title attribute.</p>
-
- -

If you're referring to a local resource on the same server, you can -use relative paths:

- -
See my [About](/about/) page for details.
-
- -

Reference-style links use a second set of square brackets, inside -which you place a label of your choosing to identify the link:

- -
This is [an example][id] reference-style link.
-
- -

You can optionally use a space to separate the sets of brackets:

- -
This is [an example] [id] reference-style link.
-
- -

Then, anywhere in the document, you define your link label like this, -on a line by itself:

- -
[id]: http://example.com/  "Optional Title Here"
-
- -

That is:

- -
    -
  • Square brackets containing the link identifier (optionally -indented from the left margin using up to three spaces);
  • -
  • followed by a colon;
  • -
  • followed by one or more spaces (or tabs);
  • -
  • followed by the URL for the link;
  • -
  • optionally followed by a title attribute for the link, enclosed -in double or single quotes.
  • -
- -

The link URL may, optionally, be surrounded by angle brackets:

- -
[id]: <http://example.com/>  "Optional Title Here"
-
- -

You can put the title attribute on the next line and use extra spaces -or tabs for padding, which tends to look better with longer URLs:

- -
[id]: http://example.com/longish/path/to/resource/here
-    "Optional Title Here"
-
- -

Link definitions are only used for creating links during Markdown -processing, and are stripped from your document in the HTML output.

- -

Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:

- -
[link text][a]
-[link text][A]
-
- -

are equivalent.

- -

The implicit link name shortcut allows you to omit the name of the -link, in which case the link text itself is used as the name. -Just use an empty set of square brackets -- e.g., to link the word -"Google" to the google.com web site, you could simply write:

- -
[Google][]
-
- -

And then define the link:

- -
[Google]: http://google.com/
-
- -

Because link names may contain spaces, this shortcut even works for -multiple words in the link text:

- -
Visit [Daring Fireball][] for more information.
-
- -

And then define the link:

- -
[Daring Fireball]: http://daringfireball.net/
-
- -

Link definitions can be placed anywhere in your Markdown document. I -tend to put them immediately after each paragraph in which they're -used, but if you want, you can put them all at the end of your -document, sort of like footnotes.

- -

Here's an example of reference links in action:

- -
I get 10 times more traffic from [Google] [1] than from
-[Yahoo] [2] or [MSN] [3].
-
-  [1]: http://google.com/        "Google"
-  [2]: http://search.yahoo.com/  "Yahoo Search"
-  [3]: http://search.msn.com/    "MSN Search"
-
- -

Using the implicit link name shortcut, you could instead write:

- -
I get 10 times more traffic from [Google][] than from
-[Yahoo][] or [MSN][].
-
-  [google]: http://google.com/        "Google"
-  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
-  [msn]:    http://search.msn.com/    "MSN Search"
-
- -

Both of the above examples will produce the following HTML output:

- -
<p>I get 10 times more traffic from <a href="http://google.com/"
-title="Google">Google</a> than from
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
-
- -

For comparison, here is the same paragraph written using -Markdown's inline link style:

- -
I get 10 times more traffic from [Google](http://google.com/ "Google")
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
-[MSN](http://search.msn.com/ "MSN Search").
-
- -

The point of reference-style links is not that they're easier to -write. The point is that with reference-style links, your document -source is vastly more readable. Compare the above examples: using -reference-style links, the paragraph itself is only 81 characters -long; with inline-style links, it's 176 characters; and as raw HTML, -it's 234 characters. In the raw HTML, there's more markup than there -is text.

- -

With Markdown's reference-style links, a source document much more -closely resembles the final output, as rendered in a browser. By -allowing you to move the markup-related metadata out of the paragraph, -you can add links without interrupting the narrative flow of your -prose.

- -

Emphasis

- -

Markdown treats asterisks (*) and underscores (_) as indicators of -emphasis. Text wrapped with one * or _ will be wrapped with an -HTML <em> tag; double *'s or _'s will be wrapped with an HTML -<strong> tag. E.g., this input:

- -
*single asterisks*
-
-_single underscores_
-
-**double asterisks**
-
-__double underscores__
-
- -

will produce:

- -
<em>single asterisks</em>
-
-<em>single underscores</em>
-
-<strong>double asterisks</strong>
-
-<strong>double underscores</strong>
-
- -

You can use whichever style you prefer; the lone restriction is that -the same character must be used to open and close an emphasis span.

- -

Emphasis can be used in the middle of a word:

- -
un*fucking*believable
-
- -

But if you surround an * or _ with spaces, it'll be treated as a -literal asterisk or underscore.

- -

To produce a literal asterisk or underscore at a position where it -would otherwise be used as an emphasis delimiter, you can backslash -escape it:

- -
\*this text is surrounded by literal asterisks\*
-
- -

Code

- -

To indicate a span of code, wrap it with backtick quotes (`). -Unlike a pre-formatted code block, a code span indicates code within a -normal paragraph. For example:

- -
Use the `printf()` function.
-
- -

will produce:

- -
<p>Use the <code>printf()</code> function.</p>
-
- -

To include a literal backtick character within a code span, you can use -multiple backticks as the opening and closing delimiters:

- -
``There is a literal backtick (`) here.``
-
- -

which will produce this:

- -
<p><code>There is a literal backtick (`) here.</code></p>
-
- -

The backtick delimiters surrounding a code span may include spaces -- -one after the opening, one before the closing. This allows you to place -literal backtick characters at the beginning or end of a code span:

- -
A single backtick in a code span: `` ` ``
-
-A backtick-delimited string in a code span: `` `foo` ``
-
- -

will produce:

- -
<p>A single backtick in a code span: <code>`</code></p>
-
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
-
- -

With a code span, ampersands and angle brackets are encoded as HTML -entities automatically, which makes it easy to include example HTML -tags. Markdown will turn this:

- -
Please don't use any `<blink>` tags.
-
- -

into:

- -
<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
-
- -

You can write this:

- -
`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
-
- -

to produce:

- -
<p><code>&amp;#8212;</code> is the decimal-encoded
-equivalent of <code>&amp;mdash;</code>.</p>
-
- -

Images

- -

Admittedly, it's fairly difficult to devise a "natural" syntax for -placing images into a plain text document format.

- -

Markdown uses an image syntax that is intended to resemble the syntax -for links, allowing for two styles: inline and reference.

- -

Inline image syntax looks like this:

- -
![Alt text](/path/to/img.jpg)
-
-![Alt text](/path/to/img.jpg "Optional title")
-
- -

That is:

- -
    -
  • An exclamation mark: !;
  • -
  • followed by a set of square brackets, containing the alt -attribute text for the image;
  • -
  • followed by a set of parentheses, containing the URL or path to -the image, and an optional title attribute enclosed in double -or single quotes.
  • -
- -

Reference-style image syntax looks like this:

- -
![Alt text][id]
-
- -

Where "id" is the name of a defined image reference. Image references -are defined using syntax identical to link references:

- -
[id]: url/to/image  "Optional title attribute"
-
- -

As of this writing, Markdown has no syntax for specifying the -dimensions of an image; if this is important to you, you can simply -use regular HTML <img> tags.

- -
- -

Miscellaneous

- - - -

Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:

- -
<http://example.com/>
-
- -

Markdown will turn this into:

- -
<a href="http://example.com/">http://example.com/</a>
-
- -

Automatic links for email addresses work similarly, except that -Markdown will also perform a bit of randomized decimal and hex -entity-encoding to help obscure your address from address-harvesting -spambots. For example, Markdown will turn this:

- -
<address@example.com>
-
- -

into something like this:

- -
<a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
-
- -

which will render in a browser as a clickable link to "address@example.com".

- -

(This sort of entity-encoding trick will indeed fool many, if not -most, address-harvesting bots, but it definitely won't fool all of -them. It's better than nothing, but an address published in this way -will probably eventually start receiving spam.)

- -

Backslash Escapes

- -

Markdown allows you to use backslash escapes to generate literal -characters which would otherwise have special meaning in Markdown's -formatting syntax. For example, if you wanted to surround a word with -literal asterisks (instead of an HTML <em> tag), you can backslashes -before the asterisks, like this:

- -
\*literal asterisks\*
-
- -

Markdown provides backslash escapes for the following characters:

- -
\   backslash
-`   backtick
-*   asterisk
-_   underscore
-{}  curly braces
-[]  square brackets
-()  parentheses
-#   hash mark
-+   plus sign
--   minus sign (hyphen)
-.   dot
-!   exclamation mark
-
diff --git a/test/tests/markdown_documentation_syntax.md b/test/tests/markdown_documentation_syntax.md deleted file mode 100644 index 79287abc9f..0000000000 --- a/test/tests/markdown_documentation_syntax.md +++ /dev/null @@ -1,888 +0,0 @@ -Markdown: Syntax -================ - - - - -* [Overview](#overview) - * [Philosophy](#philosophy) - * [Inline HTML](#html) - * [Automatic Escaping for Special Characters](#autoescape) -* [Block Elements](#block) - * [Paragraphs and Line Breaks](#p) - * [Headers](#header) - * [Blockquotes](#blockquote) - * [Lists](#list) - * [Code Blocks](#precode) - * [Horizontal Rules](#hr) -* [Span Elements](#span) - * [Links](#link) - * [Emphasis](#em) - * [Code](#code) - * [Images](#img) -* [Miscellaneous](#misc) - * [Backslash Escapes](#backslash) - * [Automatic Links](#autolink) - - -**Note:** This document is itself written using Markdown; you -can [see the source for it by adding '.text' to the URL][src]. - - [src]: /projects/markdown/syntax.text - -* * * - -

Overview

- -

Philosophy

- -Markdown is intended to be as easy-to-read and easy-to-write as is feasible. - -Readability, however, is emphasized above all else. A Markdown-formatted -document should be publishable as-is, as plain text, without looking -like it's been marked up with tags or formatting instructions. While -Markdown's syntax has been influenced by several existing text-to-HTML -filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4], -[Grutatext] [5], and [EtText] [6] -- the single biggest source of -inspiration for Markdown's syntax is the format of plain text email. - - [1]: http://docutils.sourceforge.net/mirror/setext.html - [2]: http://www.aaronsw.com/2002/atx/ - [3]: http://textism.com/tools/textile/ - [4]: http://docutils.sourceforge.net/rst.html - [5]: http://www.triptico.com/software/grutatxt.html - [6]: http://ettext.taint.org/doc/ - -To this end, Markdown's syntax is comprised entirely of punctuation -characters, which punctuation characters have been carefully chosen so -as to look like what they mean. E.g., asterisks around a word actually -look like \*emphasis\*. Markdown lists look like, well, lists. Even -blockquotes look like quoted passages of text, assuming you've ever -used email. - - - -

Inline HTML

- -Markdown's syntax is intended for one purpose: to be used as a -format for *writing* for the web. - -Markdown is not a replacement for HTML, or even close to it. Its -syntax is very small, corresponding only to a very small subset of -HTML tags. The idea is *not* to create a syntax that makes it easier -to insert HTML tags. In my opinion, HTML tags are already easy to -insert. The idea for Markdown is to make it easy to read, write, and -edit prose. HTML is a *publishing* format; Markdown is a *writing* -format. Thus, Markdown's formatting syntax only addresses issues that -can be conveyed in plain text. - -For any markup that is not covered by Markdown's syntax, you simply -use HTML itself. There's no need to preface it or delimit it to -indicate that you're switching from Markdown to HTML; you just use -the tags. - -The only restrictions are that block-level HTML elements -- e.g. `
`, -``, `
`, `

`, etc. -- must be separated from surrounding -content by blank lines, and the start and end tags of the block should -not be indented with tabs or spaces. Markdown is smart enough not -to add extra (unwanted) `

` tags around HTML block-level tags. - -For example, to add an HTML table to a Markdown article: - - This is a regular paragraph. - -

- - - -
Foo
- - This is another regular paragraph. - -Note that Markdown formatting syntax is not processed within block-level -HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an -HTML block. - -Span-level HTML tags -- e.g. ``, ``, or `` -- can be -used anywhere in a Markdown paragraph, list item, or header. If you -want, you can even use HTML tags instead of Markdown formatting; e.g. if -you'd prefer to use HTML `` or `` tags instead of Markdown's -link or image syntax, go right ahead. - -Unlike block-level HTML tags, Markdown syntax *is* processed within -span-level tags. - - -

Automatic Escaping for Special Characters

- -In HTML, there are two characters that demand special treatment: `<` -and `&`. Left angle brackets are used to start tags; ampersands are -used to denote HTML entities. If you want to use them as literal -characters, you must escape them as entities, e.g. `<`, and -`&`. - -Ampersands in particular are bedeviling for web writers. If you want to -write about 'AT&T', you need to write '`AT&T`'. You even need to -escape ampersands within URLs. Thus, if you want to link to: - - http://images.google.com/images?num=30&q=larry+bird - -you need to encode the URL as: - - http://images.google.com/images?num=30&q=larry+bird - -in your anchor tag `href` attribute. Needless to say, this is easy to -forget, and is probably the single most common source of HTML validation -errors in otherwise well-marked-up web sites. - -Markdown allows you to use these characters naturally, taking care of -all the necessary escaping for you. If you use an ampersand as part of -an HTML entity, it remains unchanged; otherwise it will be translated -into `&`. - -So, if you want to include a copyright symbol in your article, you can write: - - © - -and Markdown will leave it alone. But if you write: - - AT&T - -Markdown will translate it to: - - AT&T - -Similarly, because Markdown supports [inline HTML](#html), if you use -angle brackets as delimiters for HTML tags, Markdown will treat them as -such. But if you write: - - 4 < 5 - -Markdown will translate it to: - - 4 < 5 - -However, inside Markdown code spans and blocks, angle brackets and -ampersands are *always* encoded automatically. This makes it easy to use -Markdown to write about HTML code. (As opposed to raw HTML, which is a -terrible format for writing about HTML syntax, because every single `<` -and `&` in your example code needs to be escaped.) - - -* * * - - -

Block Elements

- - -

Paragraphs and Line Breaks

- -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing but spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs. - -The implication of the "one or more consecutive lines of text" rule is -that Markdown supports "hard-wrapped" text paragraphs. This differs -significantly from most other text-to-HTML formatters (including Movable -Type's "Convert Line Breaks" option) which translate every line break -character in a paragraph into a `
` tag. - -When you *do* want to insert a `
` break tag using Markdown, you -end a line with two or more spaces, then type return. - -Yes, this takes a tad more effort to create a `
`, but a simplistic -"every line break is a `
`" rule wouldn't work for Markdown. -Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l] -work best -- and look better -- when you format them with hard breaks. - - [bq]: #blockquote - [l]: #list - - - - - -Markdown supports two styles of headers, [Setext] [1] and [atx] [2]. - -Setext-style headers are "underlined" using equal signs (for first-level -headers) and dashes (for second-level headers). For example: - - This is an H1 - ============= - - This is an H2 - ------------- - -Any number of underlining `=`'s or `-`'s will work. - -Atx-style headers use 1-6 hash characters at the start of the line, -corresponding to header levels 1-6. For example: - - # This is an H1 - - ## This is an H2 - - ###### This is an H6 - -Optionally, you may "close" atx-style headers. This is purely -cosmetic -- you can use this if you think it looks better. The -closing hashes don't even need to match the number of hashes -used to open the header. (The number of opening hashes -determines the header level.) : - - # This is an H1 # - - ## This is an H2 ## - - ### This is an H3 ###### - - -

Blockquotes

- -Markdown uses email-style `>` characters for blockquoting. If you're -familiar with quoting passages of text in an email message, then you -know how to create a blockquote in Markdown. It looks best if you hard -wrap the text and put a `>` before every line: - - > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, - > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. - > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. - > - > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse - > id sem consectetuer libero luctus adipiscing. - -Markdown allows you to be lazy and only put the `>` before the first -line of a hard-wrapped paragraph: - - > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, - consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. - Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. - - > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse - id sem consectetuer libero luctus adipiscing. - -Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by -adding additional levels of `>`: - - > This is the first level of quoting. - > - > > This is nested blockquote. - > - > Back to the first level. - -Blockquotes can contain other Markdown elements, including headers, lists, -and code blocks: - - > ## This is a header. - > - > 1. This is the first list item. - > 2. This is the second list item. - > - > Here's some example code: - > - > return shell_exec("echo $input | $markdown_script"); - -Any decent text editor should make email-style quoting easy. For -example, with BBEdit, you can make a selection and choose Increase -Quote Level from the Text menu. - - -

Lists

- -Markdown supports ordered (numbered) and unordered (bulleted) lists. - -Unordered lists use asterisks, pluses, and hyphens -- interchangably --- as list markers: - - * Red - * Green - * Blue - -is equivalent to: - - + Red - + Green - + Blue - -and: - - - Red - - Green - - Blue - -Ordered lists use numbers followed by periods: - - 1. Bird - 2. McHale - 3. Parish - -It's important to note that the actual numbers you use to mark the -list have no effect on the HTML output Markdown produces. The HTML -Markdown produces from the above list is: - -
    -
  1. Bird
  2. -
  3. McHale
  4. -
  5. Parish
  6. -
- -If you instead wrote the list in Markdown like this: - - 1. Bird - 1. McHale - 1. Parish - -or even: - - 3. Bird - 1. McHale - 8. Parish - -you'd get the exact same HTML output. The point is, if you want to, -you can use ordinal numbers in your ordered Markdown lists, so that -the numbers in your source match the numbers in your published HTML. -But if you want to be lazy, you don't have to. - -If you do use lazy list numbering, however, you should still start the -list with the number 1. At some point in the future, Markdown may support -starting ordered lists at an arbitrary number. - -List markers typically start at the left margin, but may be indented by -up to three spaces. List markers must be followed by one or more spaces -or a tab. - -To make lists look nice, you can wrap items with hanging indents: - - * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, - viverra nec, fringilla in, laoreet vitae, risus. - * Donec sit amet nisl. Aliquam semper ipsum sit amet velit. - Suspendisse id sem consectetuer libero luctus adipiscing. - -But if you want to be lazy, you don't have to: - - * Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, - viverra nec, fringilla in, laoreet vitae, risus. - * Donec sit amet nisl. Aliquam semper ipsum sit amet velit. - Suspendisse id sem consectetuer libero luctus adipiscing. - -If list items are separated by blank lines, Markdown will wrap the -items in `

` tags in the HTML output. For example, this input: - - * Bird - * Magic - -will turn into: - -

    -
  • Bird
  • -
  • Magic
  • -
- -But this: - - * Bird - - * Magic - -will turn into: - -
    -
  • Bird

  • -
  • Magic

  • -
- -List items may consist of multiple paragraphs. Each subsequent -paragraph in a list item must be intended by either 4 spaces -or one tab: - - 1. This is a list item with two paragraphs. Lorem ipsum dolor - sit amet, consectetuer adipiscing elit. Aliquam hendrerit - mi posuere lectus. - - Vestibulum enim wisi, viverra nec, fringilla in, laoreet - vitae, risus. Donec sit amet nisl. Aliquam semper ipsum - sit amet velit. - - 2. Suspendisse id sem consectetuer libero luctus adipiscing. - -It looks nice if you indent every line of the subsequent -paragraphs, but here again, Markdown will allow you to be -lazy: - - * This is a list item with two paragraphs. - - This is the second paragraph in the list item. You're - only required to indent the first line. Lorem ipsum dolor - sit amet, consectetuer adipiscing elit. - - * Another item in the same list. - -To put a blockquote within a list item, the blockquote's `>` -delimiters need to be indented: - - * A list item with a blockquote: - - > This is a blockquote - > inside a list item. - -To put a code block within a list item, the code block needs -to be indented *twice* -- 8 spaces or two tabs: - - * A list item with a code block: - - - - -It's worth noting that it's possible to trigger an ordered list by -accident, by writing something like this: - - 1986. What a great season. - -In other words, a *number-period-space* sequence at the beginning of a -line. To avoid this, you can backslash-escape the period: - - 1986\. What a great season. - - - -

Code Blocks

- -Pre-formatted code blocks are used for writing about programming or -markup source code. Rather than forming normal paragraphs, the lines -of a code block are interpreted literally. Markdown wraps a code block -in both `
` and `` tags.
-
-To produce a code block in Markdown, simply indent every line of the
-block by at least 4 spaces or 1 tab. For example, given this input:
-
-    This is a normal paragraph:
-
-        This is a code block.
-
-Markdown will generate:
-
-    

This is a normal paragraph:

- -
This is a code block.
-    
- -One level of indentation -- 4 spaces or 1 tab -- is removed from each -line of the code block. For example, this: - - Here is an example of AppleScript: - - tell application "Foo" - beep - end tell - -will turn into: - -

Here is an example of AppleScript:

- -
tell application "Foo"
-        beep
-    end tell
-    
- -A code block continues until it reaches a line that is not indented -(or the end of the article). - -Within a code block, ampersands (`&`) and angle brackets (`<` and `>`) -are automatically converted into HTML entities. This makes it very -easy to include example HTML source code using Markdown -- just paste -it and indent it, and Markdown will handle the hassle of encoding the -ampersands and angle brackets. For example, this: - - - -will turn into: - -
<div class="footer">
-        &copy; 2004 Foo Corporation
-    </div>
-    
- -Regular Markdown syntax is not processed within code blocks. E.g., -asterisks are just literal asterisks within a code block. This means -it's also easy to use Markdown to write about Markdown's own syntax. - - - -

Horizontal Rules

- -You can produce a horizontal rule tag (`
`) by placing three or -more hyphens, asterisks, or underscores on a line by themselves. If you -wish, you may use spaces between the hyphens or asterisks. Each of the -following lines will produce a horizontal rule: - - * * * - - *** - - ***** - - - - - - - --------------------------------------- - - _ _ _ - - -* * * - -

Span Elements

- - - -Markdown supports two style of links: *inline* and *reference*. - -In both styles, the link text is delimited by [square brackets]. - -To create an inline link, use a set of regular parentheses immediately -after the link text's closing square bracket. Inside the parentheses, -put the URL where you want the link to point, along with an *optional* -title for the link, surrounded in quotes. For example: - - This is [an example](http://example.com/ "Title") inline link. - - [This link](http://example.net/) has no title attribute. - -Will produce: - -

This is - an example inline link.

- -

This link has no - title attribute.

- -If you're referring to a local resource on the same server, you can -use relative paths: - - See my [About](/about/) page for details. - -Reference-style links use a second set of square brackets, inside -which you place a label of your choosing to identify the link: - - This is [an example][id] reference-style link. - -You can optionally use a space to separate the sets of brackets: - - This is [an example] [id] reference-style link. - -Then, anywhere in the document, you define your link label like this, -on a line by itself: - - [id]: http://example.com/ "Optional Title Here" - -That is: - -* Square brackets containing the link identifier (optionally - indented from the left margin using up to three spaces); -* followed by a colon; -* followed by one or more spaces (or tabs); -* followed by the URL for the link; -* optionally followed by a title attribute for the link, enclosed - in double or single quotes. - -The link URL may, optionally, be surrounded by angle brackets: - - [id]: "Optional Title Here" - -You can put the title attribute on the next line and use extra spaces -or tabs for padding, which tends to look better with longer URLs: - - [id]: http://example.com/longish/path/to/resource/here - "Optional Title Here" - -Link definitions are only used for creating links during Markdown -processing, and are stripped from your document in the HTML output. - -Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links: - - [link text][a] - [link text][A] - -are equivalent. - -The *implicit link name* shortcut allows you to omit the name of the -link, in which case the link text itself is used as the name. -Just use an empty set of square brackets -- e.g., to link the word -"Google" to the google.com web site, you could simply write: - - [Google][] - -And then define the link: - - [Google]: http://google.com/ - -Because link names may contain spaces, this shortcut even works for -multiple words in the link text: - - Visit [Daring Fireball][] for more information. - -And then define the link: - - [Daring Fireball]: http://daringfireball.net/ - -Link definitions can be placed anywhere in your Markdown document. I -tend to put them immediately after each paragraph in which they're -used, but if you want, you can put them all at the end of your -document, sort of like footnotes. - -Here's an example of reference links in action: - - I get 10 times more traffic from [Google] [1] than from - [Yahoo] [2] or [MSN] [3]. - - [1]: http://google.com/ "Google" - [2]: http://search.yahoo.com/ "Yahoo Search" - [3]: http://search.msn.com/ "MSN Search" - -Using the implicit link name shortcut, you could instead write: - - I get 10 times more traffic from [Google][] than from - [Yahoo][] or [MSN][]. - - [google]: http://google.com/ "Google" - [yahoo]: http://search.yahoo.com/ "Yahoo Search" - [msn]: http://search.msn.com/ "MSN Search" - -Both of the above examples will produce the following HTML output: - -

I get 10 times more traffic from Google than from - Yahoo - or MSN.

- -For comparison, here is the same paragraph written using -Markdown's inline link style: - - I get 10 times more traffic from [Google](http://google.com/ "Google") - than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or - [MSN](http://search.msn.com/ "MSN Search"). - -The point of reference-style links is not that they're easier to -write. The point is that with reference-style links, your document -source is vastly more readable. Compare the above examples: using -reference-style links, the paragraph itself is only 81 characters -long; with inline-style links, it's 176 characters; and as raw HTML, -it's 234 characters. In the raw HTML, there's more markup than there -is text. - -With Markdown's reference-style links, a source document much more -closely resembles the final output, as rendered in a browser. By -allowing you to move the markup-related metadata out of the paragraph, -you can add links without interrupting the narrative flow of your -prose. - - -

Emphasis

- -Markdown treats asterisks (`*`) and underscores (`_`) as indicators of -emphasis. Text wrapped with one `*` or `_` will be wrapped with an -HTML `` tag; double `*`'s or `_`'s will be wrapped with an HTML -`` tag. E.g., this input: - - *single asterisks* - - _single underscores_ - - **double asterisks** - - __double underscores__ - -will produce: - - single asterisks - - single underscores - - double asterisks - - double underscores - -You can use whichever style you prefer; the lone restriction is that -the same character must be used to open and close an emphasis span. - -Emphasis can be used in the middle of a word: - - un*fucking*believable - -But if you surround an `*` or `_` with spaces, it'll be treated as a -literal asterisk or underscore. - -To produce a literal asterisk or underscore at a position where it -would otherwise be used as an emphasis delimiter, you can backslash -escape it: - - \*this text is surrounded by literal asterisks\* - - - -

Code

- -To indicate a span of code, wrap it with backtick quotes (`` ` ``). -Unlike a pre-formatted code block, a code span indicates code within a -normal paragraph. For example: - - Use the `printf()` function. - -will produce: - -

Use the printf() function.

- -To include a literal backtick character within a code span, you can use -multiple backticks as the opening and closing delimiters: - - ``There is a literal backtick (`) here.`` - -which will produce this: - -

There is a literal backtick (`) here.

- -The backtick delimiters surrounding a code span may include spaces -- -one after the opening, one before the closing. This allows you to place -literal backtick characters at the beginning or end of a code span: - - A single backtick in a code span: `` ` `` - - A backtick-delimited string in a code span: `` `foo` `` - -will produce: - -

A single backtick in a code span: `

- -

A backtick-delimited string in a code span: `foo`

- -With a code span, ampersands and angle brackets are encoded as HTML -entities automatically, which makes it easy to include example HTML -tags. Markdown will turn this: - - Please don't use any `` tags. - -into: - -

Please don't use any <blink> tags.

- -You can write this: - - `—` is the decimal-encoded equivalent of `—`. - -to produce: - -

&#8212; is the decimal-encoded - equivalent of &mdash;.

- - - -

Images

- -Admittedly, it's fairly difficult to devise a "natural" syntax for -placing images into a plain text document format. - -Markdown uses an image syntax that is intended to resemble the syntax -for links, allowing for two styles: *inline* and *reference*. - -Inline image syntax looks like this: - - ![Alt text](/path/to/img.jpg) - - ![Alt text](/path/to/img.jpg "Optional title") - -That is: - -* An exclamation mark: `!`; -* followed by a set of square brackets, containing the `alt` - attribute text for the image; -* followed by a set of parentheses, containing the URL or path to - the image, and an optional `title` attribute enclosed in double - or single quotes. - -Reference-style image syntax looks like this: - - ![Alt text][id] - -Where "id" is the name of a defined image reference. Image references -are defined using syntax identical to link references: - - [id]: url/to/image "Optional title attribute" - -As of this writing, Markdown has no syntax for specifying the -dimensions of an image; if this is important to you, you can simply -use regular HTML `` tags. - - -* * * - - -

Miscellaneous

- - - -Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this: - - - -Markdown will turn this into: - - http://example.com/ - -Automatic links for email addresses work similarly, except that -Markdown will also perform a bit of randomized decimal and hex -entity-encoding to help obscure your address from address-harvesting -spambots. For example, Markdown will turn this: - - - -into something like this: - - address@exa - mple.com - -which will render in a browser as a clickable link to "address@example.com". - -(This sort of entity-encoding trick will indeed fool many, if not -most, address-harvesting bots, but it definitely won't fool all of -them. It's better than nothing, but an address published in this way -will probably eventually start receiving spam.) - - - -

Backslash Escapes

- -Markdown allows you to use backslash escapes to generate literal -characters which would otherwise have special meaning in Markdown's -formatting syntax. For example, if you wanted to surround a word with -literal asterisks (instead of an HTML `` tag), you can backslashes -before the asterisks, like this: - - \*literal asterisks\* - -Markdown provides backslash escapes for the following characters: - - \ backslash - ` backtick - * asterisk - _ underscore - {} curly braces - [] square brackets - () parentheses - # hash mark - + plus sign - - minus sign (hyphen) - . dot - ! exclamation mark - diff --git a/test/tests/nested_blockquotes.html b/test/tests/nested_blockquotes.html deleted file mode 100644 index d8ec7f8e03..0000000000 --- a/test/tests/nested_blockquotes.html +++ /dev/null @@ -1,9 +0,0 @@ -
-

foo

- -
-

bar

-
- -

foo

-
diff --git a/test/tests/nested_blockquotes.md b/test/tests/nested_blockquotes.md deleted file mode 100644 index ed3c624ffb..0000000000 --- a/test/tests/nested_blockquotes.md +++ /dev/null @@ -1,5 +0,0 @@ -> foo -> -> > bar -> -> foo diff --git a/test/tests/nested_code.html b/test/tests/nested_code.html deleted file mode 100644 index c370592015..0000000000 --- a/test/tests/nested_code.html +++ /dev/null @@ -1 +0,0 @@ -

hi ther `` ok ```

diff --git a/test/tests/nested_code.md b/test/tests/nested_code.md deleted file mode 100644 index 910e3d4628..0000000000 --- a/test/tests/nested_code.md +++ /dev/null @@ -1 +0,0 @@ -````` hi ther `` ok ``` ````` diff --git a/test/tests/nested_em.html b/test/tests/nested_em.html deleted file mode 100644 index 3ab4ec89cd..0000000000 --- a/test/tests/nested_em.html +++ /dev/null @@ -1,3 +0,0 @@ -

test test test

- -

test test test

diff --git a/test/tests/nested_em.md b/test/tests/nested_em.md deleted file mode 100644 index 550d0eb998..0000000000 --- a/test/tests/nested_em.md +++ /dev/null @@ -1,3 +0,0 @@ -*test **test** test* - -_test __test__ test_ diff --git a/test/tests/nested_square_link.html b/test/tests/nested_square_link.html deleted file mode 100644 index c8b7940831..0000000000 --- a/test/tests/nested_square_link.html +++ /dev/null @@ -1 +0,0 @@ -

the ] character

diff --git a/test/tests/nested_square_link.md b/test/tests/nested_square_link.md deleted file mode 100644 index 82226ed5f6..0000000000 --- a/test/tests/nested_square_link.md +++ /dev/null @@ -1 +0,0 @@ -[the `]` character](/url) diff --git a/test/tests/not_a_link.html b/test/tests/not_a_link.html deleted file mode 100644 index a01685d241..0000000000 --- a/test/tests/not_a_link.html +++ /dev/null @@ -1 +0,0 @@ -

[test](not a link)

diff --git a/test/tests/not_a_link.md b/test/tests/not_a_link.md deleted file mode 100644 index 26f60437df..0000000000 --- a/test/tests/not_a_link.md +++ /dev/null @@ -1 +0,0 @@ -\[test](not a link) diff --git a/test/tests/ordered_and_unordered_lists.html b/test/tests/ordered_and_unordered_lists.html deleted file mode 100644 index 3ab61229ae..0000000000 --- a/test/tests/ordered_and_unordered_lists.html +++ /dev/null @@ -1,148 +0,0 @@ -

Unordered

- -

Asterisks tight:

- -
    -
  • asterisk 1
  • -
  • asterisk 2
  • -
  • asterisk 3
  • -
- -

Asterisks loose:

- -
    -
  • asterisk 1

  • -
  • asterisk 2

  • -
  • asterisk 3

  • -
- -
- -

Pluses tight:

- -
    -
  • Plus 1
  • -
  • Plus 2
  • -
  • Plus 3
  • -
- -

Pluses loose:

- -
    -
  • Plus 1

  • -
  • Plus 2

  • -
  • Plus 3

  • -
- -
- -

Minuses tight:

- -
    -
  • Minus 1
  • -
  • Minus 2
  • -
  • Minus 3
  • -
- -

Minuses loose:

- -
    -
  • Minus 1

  • -
  • Minus 2

  • -
  • Minus 3

  • -
- -

Ordered

- -

Tight:

- -
    -
  1. First
  2. -
  3. Second
  4. -
  5. Third
  6. -
- -

and:

- -
    -
  1. One
  2. -
  3. Two
  4. -
  5. Three
  6. -
- -

Loose using tabs:

- -
    -
  1. First

  2. -
  3. Second

  4. -
  5. Third

  6. -
- -

and using spaces:

- -
    -
  1. One

  2. -
  3. Two

  4. -
  5. Three

  6. -
- -

Multiple paragraphs:

- -
    -
  1. Item 1, graf one.

    - -

    Item 2. graf two. The quick brown fox jumped over the lazy dog's -back.

  2. -
  3. Item 2.

  4. -
  5. Item 3.

  6. -
- -

Nested

- -
    -
  • Tab -
      -
    • Tab -
        -
      • Tab
      • -
    • -
  • -
- -

Here's another:

- -
    -
  1. First
  2. -
  3. Second: -
      -
    • Fee
    • -
    • Fie
    • -
    • Foe
    • -
  4. -
  5. Third
  6. -
- -

Same thing but with paragraphs:

- -
    -
  1. First

  2. -
  3. Second:

    - -
      -
    • Fee
    • -
    • Fie
    • -
    • Foe
    • -
  4. -
  5. Third

  6. -
- - -

This was an error in Markdown 1.0.1:

- -
    -
  • this

    - -
    • sub
    - -

    that

  • -
diff --git a/test/tests/ordered_and_unordered_lists.md b/test/tests/ordered_and_unordered_lists.md deleted file mode 100644 index 7f3b49777f..0000000000 --- a/test/tests/ordered_and_unordered_lists.md +++ /dev/null @@ -1,131 +0,0 @@ -## Unordered - -Asterisks tight: - -* asterisk 1 -* asterisk 2 -* asterisk 3 - - -Asterisks loose: - -* asterisk 1 - -* asterisk 2 - -* asterisk 3 - -* * * - -Pluses tight: - -+ Plus 1 -+ Plus 2 -+ Plus 3 - - -Pluses loose: - -+ Plus 1 - -+ Plus 2 - -+ Plus 3 - -* * * - - -Minuses tight: - -- Minus 1 -- Minus 2 -- Minus 3 - - -Minuses loose: - -- Minus 1 - -- Minus 2 - -- Minus 3 - - -## Ordered - -Tight: - -1. First -2. Second -3. Third - -and: - -1. One -2. Two -3. Three - - -Loose using tabs: - -1. First - -2. Second - -3. Third - -and using spaces: - -1. One - -2. Two - -3. Three - -Multiple paragraphs: - -1. Item 1, graf one. - - Item 2. graf two. The quick brown fox jumped over the lazy dog's - back. - -2. Item 2. - -3. Item 3. - - - -## Nested - -* Tab - * Tab - * Tab - -Here's another: - -1. First -2. Second: - * Fee - * Fie - * Foe -3. Third - -Same thing but with paragraphs: - -1. First - -2. Second: - * Fee - * Fie - * Foe - -3. Third - - -This was an error in Markdown 1.0.1: - -* this - - * sub - - that diff --git a/test/tests/ref_paren.html b/test/tests/ref_paren.html deleted file mode 100644 index cff6977fb5..0000000000 --- a/test/tests/ref_paren.html +++ /dev/null @@ -1 +0,0 @@ -

hi

diff --git a/test/tests/ref_paren.md b/test/tests/ref_paren.md deleted file mode 100644 index aa97c91ae4..0000000000 --- a/test/tests/ref_paren.md +++ /dev/null @@ -1,3 +0,0 @@ -[hi] - -[hi]: /url (there) diff --git a/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html b/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html deleted file mode 100644 index ee7f3bff0e..0000000000 --- a/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html +++ /dev/null @@ -1,35 +0,0 @@ -

Absolutization of RFC 3986 URIs

- -

Absolute URI

- -

section 4.3

- -

Network-path reference

- -

section 4.2

- -

Absolute path

- -

section 4.2

- -

Relative path

- -

section 4.2

- -

Dot-relative path

- -

section 3.3

- -

section 3.3

- -

Same-document query

- -

section 4.4

- -

Same-document fragment

- -

section 4.4

- -

Empty

- -

section 4.2

diff --git a/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md b/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md deleted file mode 100644 index 56f81820b1..0000000000 --- a/test/tests/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md +++ /dev/null @@ -1,27 +0,0 @@ -# Absolutization of RFC 3986 URIs - -## Absolute URI -[![section 4.3](http://example.com/logo)](http://example.com/) - -## Network-path reference -[![section 4.2](//example.com/logo)](//example.com/) - -## Absolute path -[![section 4.2](/path/to/img)](/path/to/content) - -## Relative path -[![section 4.2](img)](content) - -## Dot-relative path -[![section 3.3](./img)](./content) - -[![section 3.3](../img)](../content) - -## Same-document query -[![section 4.4](?type=image)](?) - -## Same-document fragment -[![section 4.4](#img)](#) - -## Empty -[section 4.2]() diff --git a/test/tests/same_bullet.html b/test/tests/same_bullet.html deleted file mode 100644 index 9220741c00..0000000000 --- a/test/tests/same_bullet.html +++ /dev/null @@ -1,5 +0,0 @@ -
    -
  • test
  • -
  • test
  • -
  • test
  • -
diff --git a/test/tests/same_bullet.md b/test/tests/same_bullet.md deleted file mode 100644 index 27a89675ab..0000000000 --- a/test/tests/same_bullet.md +++ /dev/null @@ -1,3 +0,0 @@ -* test -+ test -- test diff --git a/test/tests/strong_and_em_together.html b/test/tests/strong_and_em_together.html deleted file mode 100644 index 71ec78c709..0000000000 --- a/test/tests/strong_and_em_together.html +++ /dev/null @@ -1,7 +0,0 @@ -

This is strong and em.

- -

So is this word.

- -

This is strong and em.

- -

So is this word.

diff --git a/test/tests/strong_and_em_together.md b/test/tests/strong_and_em_together.md deleted file mode 100644 index 95ee690dbe..0000000000 --- a/test/tests/strong_and_em_together.md +++ /dev/null @@ -1,7 +0,0 @@ -***This is strong and em.*** - -So is ***this*** word. - -___This is strong and em.___ - -So is ___this___ word. diff --git a/test/tests/tabs.html b/test/tests/tabs.html deleted file mode 100644 index 3301ba803b..0000000000 --- a/test/tests/tabs.html +++ /dev/null @@ -1,25 +0,0 @@ -
    -
  • this is a list item -indented with tabs

  • -
  • this is a list item -indented with spaces

  • -
- -

Code:

- -
this code block is indented by one tab
-
- -

And:

- -
    this code block is indented by two tabs
-
- -

And:

- -
+   this is an example list item
-    indented with tabs
-
-+   this is an example list item
-    indented with spaces
-
diff --git a/test/tests/tabs.md b/test/tests/tabs.md deleted file mode 100644 index 589d1136e1..0000000000 --- a/test/tests/tabs.md +++ /dev/null @@ -1,21 +0,0 @@ -+ this is a list item - indented with tabs - -+ this is a list item - indented with spaces - -Code: - - this code block is indented by one tab - -And: - - this code block is indented by two tabs - -And: - - + this is an example list item - indented with tabs - - + this is an example list item - indented with spaces diff --git a/test/tests/text.smartypants.html b/test/tests/text.smartypants.html deleted file mode 100644 index 33718eeac9..0000000000 --- a/test/tests/text.smartypants.html +++ /dev/null @@ -1,6 +0,0 @@ -

Hello world ‘how’ “are” you – today…

- -

“It’s a more ‘challenging’ smartypants test…”

- -

‘And,’ as a bonus — “one -multiline” test!

diff --git a/test/tests/text.smartypants.md b/test/tests/text.smartypants.md deleted file mode 100644 index 24e204643e..0000000000 --- a/test/tests/text.smartypants.md +++ /dev/null @@ -1,6 +0,0 @@ -Hello world 'how' "are" you -- today... - -"It's a more 'challenging' smartypants test..." - -'And,' as a bonus --- "one -multiline" test! diff --git a/test/tests/tidyness.html b/test/tests/tidyness.html deleted file mode 100644 index f2a8ce70f5..0000000000 --- a/test/tests/tidyness.html +++ /dev/null @@ -1,8 +0,0 @@ -
-

A list within a blockquote:

-
    -
  • asterisk 1
  • -
  • asterisk 2
  • -
  • asterisk 3
  • -
-
diff --git a/test/tests/tidyness.md b/test/tests/tidyness.md deleted file mode 100644 index 5f18b8da21..0000000000 --- a/test/tests/tidyness.md +++ /dev/null @@ -1,5 +0,0 @@ -> A list within a blockquote: -> -> * asterisk 1 -> * asterisk 2 -> * asterisk 3 diff --git a/test/tests/toplevel_paragraphs.gfm.html b/test/tests/toplevel_paragraphs.gfm.html deleted file mode 100644 index d15bfccef0..0000000000 --- a/test/tests/toplevel_paragraphs.gfm.html +++ /dev/null @@ -1,34 +0,0 @@ -

hello world - text after spaces - text after spaces

- -

paragraph before code

-
text inside block code
- -

paragraph before hr

-
- -

paragraph before head with hash

-

how are you

- -

paragraph before head with equals

-

how are you

- -

paragraph before blockquote

-

text for blockquote

- -

paragraph before list

-
  • text inside list
- -

paragraph before div

-
text inside div
- -

paragraph with span -text inside span

- -

hello world -

- -
hello
- -

hello

diff --git a/test/tests/toplevel_paragraphs.gfm.md b/test/tests/toplevel_paragraphs.gfm.md deleted file mode 100644 index 8430b9f86c..0000000000 --- a/test/tests/toplevel_paragraphs.gfm.md +++ /dev/null @@ -1,38 +0,0 @@ -hello world - text after spaces - text after spaces - -paragraph before code -``` -text inside block code -``` - -paragraph before hr -* * * - -paragraph before head with hash -# how are you - -paragraph before head with equals -how are you -=========== - -paragraph before blockquote -> text for blockquote - -paragraph before list -* text inside list - -paragraph before div -
text inside div
- -paragraph with span -text inside span - -hello [world][how] - -[how]: /are/you - -
hello
- -hello diff --git a/test/tests/tricky_list.html b/test/tests/tricky_list.html deleted file mode 100644 index 764a3352be..0000000000 --- a/test/tests/tricky_list.html +++ /dev/null @@ -1,23 +0,0 @@ -

hello world

- -
    -
  • hello world
  • -
- -

hello world

- -
    -
  • hello world
  • -
- -

hello world

- -
    -
  • Hello world
  • -
- -

hello world

- -
    -
  • hello world
  • -
diff --git a/test/tests/tricky_list.md b/test/tests/tricky_list.md deleted file mode 100644 index 9aa76ceb9f..0000000000 --- a/test/tests/tricky_list.md +++ /dev/null @@ -1,15 +0,0 @@ -**hello** _world_ - -* hello world - -**hello** _world_ - -* hello world - -**hello** _world_ - -* Hello world - -**hello** _world_ - -* hello world diff --git a/test/tests/uppercase_hex.sanitize.html b/test/tests/uppercase_hex.sanitize.html deleted file mode 100644 index 15b722bfe9..0000000000 --- a/test/tests/uppercase_hex.sanitize.html +++ /dev/null @@ -1,2 +0,0 @@ -

lowerlower -upperupper

diff --git a/test/tests/uppercase_hex.sanitize.md b/test/tests/uppercase_hex.sanitize.md deleted file mode 100644 index bea65b9b82..0000000000 --- a/test/tests/uppercase_hex.sanitize.md +++ /dev/null @@ -1,2 +0,0 @@ -lower[click me](javascript:...)lower -upper[click me](javascript:...)upper From 31005193a7b67fcfe87533a259c0254d3dc05a22 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 13:53:05 -0600 Subject: [PATCH 05/17] always "fix" tests before testing --- test/index.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/test/index.js b/test/index.js index 3a350398f5..142582f28f 100644 --- a/test/index.js +++ b/test/index.js @@ -101,7 +101,7 @@ main: }); flags.forEach(function(key) { var val = true; - if(key.indexOf('=') !== -1) { + if (key.indexOf('=') !== -1) { val = decodeURIComponent(key.substring(key.indexOf('=') + 1)); key = key.substring(0, key.indexOf('=')); } else if (key.indexOf('no') === 0) { @@ -117,7 +117,7 @@ main: try { text = engine(file.text).replace(/\s/g, ''); html = file.html.replace(/\s/g, ''); - } catch(e) { + } catch (e) { console.log('%s failed.', filename); throw e; } @@ -319,7 +319,7 @@ function time(options) { * conformance. */ -function fix(options) { +function fix() { ['tests', 'original', 'new'].forEach(function(dir) { try { fs.mkdirSync(path.resolve(__dirname, dir), 0755); @@ -449,7 +449,13 @@ function parseArg(argv) { case '-f': case '--fix': case 'fix': - options.fix = true; + if (options.fix !== false) { + options.fix = true; + } + break; + case '--no-fix': + case 'no-fix': + options.fix = false; break; case '-b': case '--bench': @@ -465,7 +471,7 @@ function parseArg(argv) { break; default: if (arg.indexOf('--') === 0) { - opt = camelize(arg.replace(/^--(no-)?/, '')); + var opt = camelize(arg.replace(/^--(no-)?/, '')); if (!marked.defaults.hasOwnProperty(opt)) { continue; } @@ -506,8 +512,12 @@ function camelize(text) { function main(argv) { var opt = parseArg(); + if (opt.fix !== false) { + fix(); + } + if (opt.fix) { - return fix(opt); + return; } if (opt.bench) { From 951f2c391696f3937b2895c86eae01e1b52ef8ac Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Tue, 2 Jan 2018 13:57:24 -0600 Subject: [PATCH 06/17] change folder name to compiled_tests --- .gitignore | 2 +- test/index.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 8f7082c4f5..14a781d96f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ node_modules/ -test/tests +test/compiled_tests diff --git a/test/index.js b/test/index.js index 142582f28f..9b2469bfb4 100644 --- a/test/index.js +++ b/test/index.js @@ -19,7 +19,7 @@ var fs = require('fs') */ function load() { - var dir = __dirname + '/tests' + var dir = __dirname + '/compiled_tests' , files = {} , list , file @@ -320,7 +320,7 @@ function time(options) { */ function fix() { - ['tests', 'original', 'new'].forEach(function(dir) { + ['compiled_tests', 'original', 'new'].forEach(function(dir) { try { fs.mkdirSync(path.resolve(__dirname, dir), 0755); } catch (e) { @@ -329,8 +329,8 @@ function fix() { }); // rm -rf tests - fs.readdirSync(path.resolve(__dirname, 'tests')).forEach(function(file) { - fs.unlinkSync(path.resolve(__dirname, 'tests', file)); + fs.readdirSync(path.resolve(__dirname, 'compiled_tests')).forEach(function(file) { + fs.unlinkSync(path.resolve(__dirname, 'compiled_tests', file)); }); // cp -r original tests @@ -339,12 +339,12 @@ function fix() { if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.') === 0) { nfile = file.replace(/([^.]+)$/, 'nogfm.$1'); } - fs.writeFileSync(path.resolve(__dirname, 'tests', nfile), + fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', nfile), fs.readFileSync(path.resolve(__dirname, 'original', file))); }); // node fix.js - var dir = __dirname + '/tests'; + var dir = __dirname + '/compiled_tests'; fs.readdirSync(dir).filter(function(file) { return path.extname(file) === '.html'; @@ -400,7 +400,7 @@ function fix() { // cp new/* tests/ fs.readdirSync(path.resolve(__dirname, 'new')).forEach(function(file) { - fs.writeFileSync(path.resolve(__dirname, 'tests', file), + fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', file), fs.readFileSync(path.resolve(__dirname, 'new', file))); }); } From 52bfc9c4db6755edc6f59d0857c07ba662d6a05d Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:11:16 -0600 Subject: [PATCH 07/17] use front-matter for test options --- package-lock.json | 40 +++++++++++++++++++ package.json | 1 + test/index.js | 36 ++++++++--------- .../{gfm_break.breaks.html => gfm_break.html} | 0 .../new/{gfm_break.breaks.md => gfm_break.md} | 3 ++ ...{gfm_hashtag.gfm.html => gfm_hashtag.html} | 0 .../{gfm_hashtag.gfm.md => gfm_hashtag.md} | 3 ++ test/new/{links.sanitize.html => links.html} | 0 test/new/{links.sanitize.md => links.md} | 5 ++- ...sanatize.nomangle.html => mangle_xss.html} | 0 ...xss.sanatize.nomangle.md => mangle_xss.md} | 4 ++ ..._hashtag.nogfm.html => nogfm_hashtag.html} | 0 ...{gfm_hashtag.nogfm.md => nogfm_hashtag.md} | 3 ++ ...Ecom%2Fbase%2F.html => relative_urls.html} | 0 ...le%2Ecom%2Fbase%2F.md => relative_urls.md} | 3 ++ ...text.smartypants.html => smartypants.html} | 0 .../{text.smartypants.md => smartypants.md} | 3 ++ ...aphs.gfm.html => toplevel_paragraphs.html} | 0 ...ragraphs.gfm.md => toplevel_paragraphs.md} | 3 ++ ...e_hex.sanitize.html => uppercase_hex.html} | 0 ...rcase_hex.sanitize.md => uppercase_hex.md} | 3 ++ 21 files changed, 87 insertions(+), 20 deletions(-) rename test/new/{gfm_break.breaks.html => gfm_break.html} (100%) rename test/new/{gfm_break.breaks.md => gfm_break.md} (60%) rename test/new/{gfm_hashtag.gfm.html => gfm_hashtag.html} (100%) rename test/new/{gfm_hashtag.gfm.md => gfm_hashtag.md} (63%) rename test/new/{links.sanitize.html => links.html} (100%) rename test/new/{links.sanitize.md => links.md} (87%) rename test/new/{mangle_xss.sanatize.nomangle.html => mangle_xss.html} (100%) rename test/new/{mangle_xss.sanatize.nomangle.md => mangle_xss.md} (63%) rename test/new/{gfm_hashtag.nogfm.html => nogfm_hashtag.html} (100%) rename test/new/{gfm_hashtag.nogfm.md => nogfm_hashtag.md} (62%) rename test/new/{relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html => relative_urls.html} (100%) rename test/new/{relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md => relative_urls.md} (92%) rename test/new/{text.smartypants.html => smartypants.html} (100%) rename test/new/{text.smartypants.md => smartypants.md} (83%) rename test/new/{toplevel_paragraphs.gfm.html => toplevel_paragraphs.html} (100%) rename test/new/{toplevel_paragraphs.gfm.md => toplevel_paragraphs.md} (96%) rename test/new/{uppercase_hex.sanitize.html => uppercase_hex.html} (100%) rename test/new/{uppercase_hex.sanitize.md => uppercase_hex.md} (78%) diff --git a/package-lock.json b/package-lock.json index 87347086a8..3b5e916592 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,15 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -308,6 +317,12 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -472,6 +487,15 @@ "for-in": "1.0.2" } }, + "front-matter": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-2.3.0.tgz", + "integrity": "sha1-cgOviWzjV+4E4qpFFp6pHtf2dQQ=", + "dev": true, + "requires": { + "js-yaml": "3.10.0" + } + }, "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -1014,6 +1038,16 @@ } } }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -1816,6 +1850,12 @@ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "stream-consume": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", diff --git a/package.json b/package.json index 13a9a88fab..99aa5bef5f 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "devDependencies": { "markdown": "*", "showdown": "*", + "front-matter": "^2.3.0", "gulp": "^3.8.11", "gulp-uglify": "^1.1.0", "gulp-concat": "^2.5.2" diff --git a/test/index.js b/test/index.js index 9b2469bfb4..f6cf608bc1 100644 --- a/test/index.js +++ b/test/index.js @@ -12,6 +12,7 @@ var fs = require('fs') , path = require('path') + , fm = require('front-matter') , marked = require('../'); /** @@ -23,6 +24,7 @@ function load() { , files = {} , list , file + , content , i , l; @@ -42,8 +44,12 @@ function load() { for (; i < l; i++) { file = path.join(dir, list[i]); + content = fm(fs.readFileSync(file, 'utf8')); + + files[path.basename(file)] = { - text: fs.readFileSync(file, 'utf8'), + options: content.attributes, + text: content.body, html: fs.readFileSync(file.replace(/[^.]+$/, 'html'), 'utf8') }; } @@ -72,7 +78,7 @@ function runTests(engine, options) { , len = keys.length , filename , file - , flags + , opts , text , html , j @@ -86,30 +92,22 @@ main: for (; i < len; i++) { filename = keys[i]; file = files[filename]; + opts = Object.keys(file.options); if (marked._original) { marked.defaults = marked._original; delete marked._original; } - flags = filename.split('.').slice(1, -1); - if (flags.length) { + if (opts.length) { marked._original = marked.defaults; marked.defaults = {}; Object.keys(marked._original).forEach(function(key) { marked.defaults[key] = marked._original[key]; }); - flags.forEach(function(key) { - var val = true; - if (key.indexOf('=') !== -1) { - val = decodeURIComponent(key.substring(key.indexOf('=') + 1)); - key = key.substring(0, key.indexOf('=')); - } else if (key.indexOf('no') === 0) { - key = key.substring(2); - val = false; - } + opts.forEach(function(key) { if (marked.defaults.hasOwnProperty(key)) { - marked.defaults[key] = val; + marked.defaults[key] = file.options[key]; } }); } @@ -335,12 +333,12 @@ function fix() { // cp -r original tests fs.readdirSync(path.resolve(__dirname, 'original')).forEach(function(file) { - var nfile = file; - if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.') === 0) { - nfile = file.replace(/([^.]+)$/, 'nogfm.$1'); + var text = fs.readFileSync(path.resolve(__dirname, 'original', file)); + + if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.md') === 0) { + text = "---\ngfm: false\n---\n" + text; } - fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', nfile), - fs.readFileSync(path.resolve(__dirname, 'original', file))); + fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', file), text); }); // node fix.js diff --git a/test/new/gfm_break.breaks.html b/test/new/gfm_break.html similarity index 100% rename from test/new/gfm_break.breaks.html rename to test/new/gfm_break.html diff --git a/test/new/gfm_break.breaks.md b/test/new/gfm_break.md similarity index 60% rename from test/new/gfm_break.breaks.md rename to test/new/gfm_break.md index 71097d23bc..5bf79a2b43 100644 --- a/test/new/gfm_break.breaks.md +++ b/test/new/gfm_break.md @@ -1,3 +1,6 @@ +--- +breaks: true +--- Look at the pretty line breaks. diff --git a/test/new/gfm_hashtag.gfm.html b/test/new/gfm_hashtag.html similarity index 100% rename from test/new/gfm_hashtag.gfm.html rename to test/new/gfm_hashtag.html diff --git a/test/new/gfm_hashtag.gfm.md b/test/new/gfm_hashtag.md similarity index 63% rename from test/new/gfm_hashtag.gfm.md rename to test/new/gfm_hashtag.md index 7656ecfd7c..5eb26bf185 100644 --- a/test/new/gfm_hashtag.gfm.md +++ b/test/new/gfm_hashtag.md @@ -1,3 +1,6 @@ +--- +gfm: true +--- #header # header1 diff --git a/test/new/links.sanitize.html b/test/new/links.html similarity index 100% rename from test/new/links.sanitize.html rename to test/new/links.html diff --git a/test/new/links.sanitize.md b/test/new/links.md similarity index 87% rename from test/new/links.sanitize.md rename to test/new/links.md index ba5d09fed7..1850be4e9f 100644 --- a/test/new/links.sanitize.md +++ b/test/new/links.md @@ -1,3 +1,6 @@ +--- +sanitize: true +--- [URL](javascript:alert) [URL](vbscript:alert) @@ -6,4 +9,4 @@ [URL](javascript:document;alert(1)) -[URL](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) \ No newline at end of file +[URL](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) diff --git a/test/new/mangle_xss.sanatize.nomangle.html b/test/new/mangle_xss.html similarity index 100% rename from test/new/mangle_xss.sanatize.nomangle.html rename to test/new/mangle_xss.html diff --git a/test/new/mangle_xss.sanatize.nomangle.md b/test/new/mangle_xss.md similarity index 63% rename from test/new/mangle_xss.sanatize.nomangle.md rename to test/new/mangle_xss.md index c44503da00..419bd124d7 100644 --- a/test/new/mangle_xss.sanatize.nomangle.md +++ b/test/new/mangle_xss.md @@ -1,3 +1,7 @@ +--- +sanatize: true +mangle: false +--- < diff --git a/test/new/gfm_hashtag.nogfm.html b/test/new/nogfm_hashtag.html similarity index 100% rename from test/new/gfm_hashtag.nogfm.html rename to test/new/nogfm_hashtag.html diff --git a/test/new/gfm_hashtag.nogfm.md b/test/new/nogfm_hashtag.md similarity index 62% rename from test/new/gfm_hashtag.nogfm.md rename to test/new/nogfm_hashtag.md index 7656ecfd7c..4b805db481 100644 --- a/test/new/gfm_hashtag.nogfm.md +++ b/test/new/nogfm_hashtag.md @@ -1,3 +1,6 @@ +--- +gfm: false +--- #header # header1 diff --git a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html b/test/new/relative_urls.html similarity index 100% rename from test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.html rename to test/new/relative_urls.html diff --git a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md b/test/new/relative_urls.md similarity index 92% rename from test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md rename to test/new/relative_urls.md index 56f81820b1..5ced8915af 100644 --- a/test/new/relative_urls.baseUrl=http%3A%2F%2Fexample%2Ecom%2Fbase%2F.md +++ b/test/new/relative_urls.md @@ -1,3 +1,6 @@ +--- +baseUrl: "http://example.com/base/" +--- # Absolutization of RFC 3986 URIs ## Absolute URI diff --git a/test/new/text.smartypants.html b/test/new/smartypants.html similarity index 100% rename from test/new/text.smartypants.html rename to test/new/smartypants.html diff --git a/test/new/text.smartypants.md b/test/new/smartypants.md similarity index 83% rename from test/new/text.smartypants.md rename to test/new/smartypants.md index 24e204643e..6922554605 100644 --- a/test/new/text.smartypants.md +++ b/test/new/smartypants.md @@ -1,3 +1,6 @@ +--- +smartypants: true +--- Hello world 'how' "are" you -- today... "It's a more 'challenging' smartypants test..." diff --git a/test/new/toplevel_paragraphs.gfm.html b/test/new/toplevel_paragraphs.html similarity index 100% rename from test/new/toplevel_paragraphs.gfm.html rename to test/new/toplevel_paragraphs.html diff --git a/test/new/toplevel_paragraphs.gfm.md b/test/new/toplevel_paragraphs.md similarity index 96% rename from test/new/toplevel_paragraphs.gfm.md rename to test/new/toplevel_paragraphs.md index 8430b9f86c..de29be7557 100644 --- a/test/new/toplevel_paragraphs.gfm.md +++ b/test/new/toplevel_paragraphs.md @@ -1,3 +1,6 @@ +--- +gfm: true +--- hello world text after spaces text after spaces diff --git a/test/new/uppercase_hex.sanitize.html b/test/new/uppercase_hex.html similarity index 100% rename from test/new/uppercase_hex.sanitize.html rename to test/new/uppercase_hex.html diff --git a/test/new/uppercase_hex.sanitize.md b/test/new/uppercase_hex.md similarity index 78% rename from test/new/uppercase_hex.sanitize.md rename to test/new/uppercase_hex.md index bea65b9b82..b4b228ab6a 100644 --- a/test/new/uppercase_hex.sanitize.md +++ b/test/new/uppercase_hex.md @@ -1,2 +1,5 @@ +--- +sanitize: true +--- lower[click me](javascript:...)lower upper[click me](javascript:...)upper From 9e0ec53ebb9fa19b9d7a26640d92ffc70203a917 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:16:46 -0600 Subject: [PATCH 08/17] fix bench --- test/index.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/test/index.js b/test/index.js index f6cf608bc1..276251daf0 100644 --- a/test/index.js +++ b/test/index.js @@ -254,24 +254,11 @@ function runBench(options) { } bench('marked (pedantic)', marked); - // robotskirt - try { - bench('robotskirt', (function() { - var rs = require('robotskirt'); - return function(text) { - var parser = rs.Markdown.std(); - return parser.render(text); - }; - })()); - } catch (e) { - console.log('Could not bench robotskirt.'); - } - // showdown try { bench('showdown (reuse converter)', (function() { var Showdown = require('showdown'); - var convert = new Showdown.converter(); + var convert = new Showdown.Converter(); return function(text) { return convert.makeHtml(text); }; @@ -279,7 +266,7 @@ function runBench(options) { bench('showdown (new converter)', (function() { var Showdown = require('showdown'); return function(text) { - var convert = new Showdown.converter(); + var convert = new Showdown.Converter(); return convert.makeHtml(text); }; })()); From e5571beb525396597b7d08c6c20bd7f6dfd802c7 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:19:43 -0600 Subject: [PATCH 09/17] linting --- test/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/index.js b/test/index.js index 276251daf0..42f0a8266a 100644 --- a/test/index.js +++ b/test/index.js @@ -323,7 +323,7 @@ function fix() { var text = fs.readFileSync(path.resolve(__dirname, 'original', file)); if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.md') === 0) { - text = "---\ngfm: false\n---\n" + text; + text = '---\ngfm: false\n---\n' + text; } fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', file), text); }); From 03f510d5b719b5869d16e9ba2790062328c6445a Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:44:10 -0600 Subject: [PATCH 10/17] add markdown-it to bench --- package-lock.json | 40 ++++++++++++++++++++++++++++++++++++++++ package.json | 1 + test/index.js | 22 +++++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 3b5e916592..9aa6dcc8c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -311,6 +311,12 @@ "once": "1.3.3" } }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1089,6 +1095,15 @@ "resolve": "1.5.0" } }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "dev": true, + "requires": { + "uc.micro": "1.0.3" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -1269,6 +1284,25 @@ "nopt": "2.1.2" } }, + "markdown-it": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.0.tgz", + "integrity": "sha512-tNuOCCfunY5v5uhcO2AUMArvKAyKMygX8tfup/JrgnsDqcCATQsAExBq7o5Ml9iMmO82bk6jYNLj6khcrl0JGA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "entities": "1.1.1", + "linkify-it": "2.0.3", + "mdurl": "1.0.1", + "uc.micro": "1.0.3" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -1989,6 +2023,12 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, + "uc.micro": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz", + "integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=", + "dev": true + }, "uglify-js": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", diff --git a/package.json b/package.json index 99aa5bef5f..1102e45861 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "devDependencies": { "markdown": "*", "showdown": "*", + "markdown-it": "*", "front-matter": "^2.3.0", "gulp": "^3.8.11", "gulp-uglify": "^1.1.0", diff --git a/test/index.js b/test/index.js index 42f0a8266a..22e5fd41bc 100644 --- a/test/index.js +++ b/test/index.js @@ -274,12 +274,32 @@ function runBench(options) { console.log('Could not bench showdown.'); } + // markdown-it + try { + bench('markdown-it', (function() { + var MarkdownIt = require('markdown-it'); + var md = new MarkdownIt(); + return function(text) { + return md.render(text); + }; + })()); + } catch (e) { + console.log('Could not bench markdown-it.'); + } + // markdown.js try { - bench('markdown.js', require('markdown').parse); + bench('markdown.js', (function() { + var markdown = require('markdown').markdown; + return function(text) { + return markdown.toHTML(text); + }; + })()); } catch (e) { console.log('Could not bench markdown.js.'); } + + return true; } /** From 26de4f1298c296f61563bb96d648a394ffaf0446 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:44:32 -0600 Subject: [PATCH 11/17] fix octal literal --- test/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/index.js b/test/index.js index 22e5fd41bc..bc33c0dfe9 100644 --- a/test/index.js +++ b/test/index.js @@ -327,7 +327,7 @@ function time(options) { function fix() { ['compiled_tests', 'original', 'new'].forEach(function(dir) { try { - fs.mkdirSync(path.resolve(__dirname, dir), 0755); + fs.mkdirSync(path.resolve(__dirname, dir), 0o755); } catch (e) { ; } From 253d97587a0f9962bc0b21dbe6dc7a6740cccb63 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:52:59 -0600 Subject: [PATCH 12/17] update readme with new bench --- README.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 68bb9204f6..ca1b811f04 100644 --- a/README.md +++ b/README.md @@ -325,19 +325,15 @@ node v0.8.x ``` bash $ node test --bench -marked completed in 3411ms. -marked (gfm) completed in 3727ms. -marked (pedantic) completed in 3201ms. -robotskirt completed in 808ms. -showdown (reuse converter) completed in 11954ms. -showdown (new converter) completed in 17774ms. -markdown-js completed in 17191ms. +marked completed in 3408ms. +marked (gfm) completed in 3465ms. +marked (pedantic) completed in 3032ms. +showdown (reuse converter) completed in 21444ms. +showdown (new converter) completed in 23058ms. +markdown-it completed in 3364ms. +markdown.js completed in 12090ms. ``` -__Marked is now faster than Discount, which is written in C.__ - -For those feeling skeptical: These benchmarks run the entire markdown test suite 1000 times. The test suite tests every feature. It doesn't cater to specific aspects. - ### Pro level You also have direct access to the lexer and parser if you so desire. From 59846d973316055b2ed4ff61840ee1d23bfa5ec0 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 01:54:16 -0600 Subject: [PATCH 13/17] update texting description --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index ca1b811f04..8c9ae42aab 100644 --- a/README.md +++ b/README.md @@ -321,10 +321,10 @@ features][gfmf]. ## Benchmarks -node v0.8.x +node v8.9.4 ``` bash -$ node test --bench +$ npm run bench marked completed in 3408ms. marked (gfm) completed in 3465ms. marked (pedantic) completed in 3032ms. @@ -368,23 +368,23 @@ suite. If you're adding a new feature, be sure to add your own test. The marked test suite is set up slightly strangely: `test/new` is for all tests that are not part of the original markdown.pl test suite (this is where your test should go if you make one). `test/original` is only for the original -markdown.pl tests. `test/tests` houses both types of tests after they have been -combined and moved/generated by running `node test --fix` or `marked --test ---fix`. +markdown.pl tests. -In other words, if you have a test to add, add it to `test/new/` and then -regenerate the tests with `node test --fix`. Commit the result. If your test +In other words, if you have a test to add, add it to `test/new/`. If your test uses a certain feature, for example, maybe it assumes GFM is *not* enabled, you -can add `.nogfm` to the filename. So, `my-test.text` becomes -`my-test.nogfm.text`. You can do this with any marked option. Say you want -line breaks and smartypants enabled, your filename should be: -`my-test.breaks.smartypants.text`. +can add [front-matter](https://www.npmjs.com/package/front-matter) to the top of +your .md file + +``` yml +--- +gfm: false +--- +``` To run the tests: ``` bash -cd marked/ -node test +npm run test ``` ### Contribution and License Agreement From b61af2a2c30650511dfa23ae54adbc6d17f9b827 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 10:46:21 -0600 Subject: [PATCH 14/17] clean up --- test/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/index.js b/test/index.js index bc33c0dfe9..9a79ab27fa 100644 --- a/test/index.js +++ b/test/index.js @@ -342,9 +342,10 @@ function fix() { fs.readdirSync(path.resolve(__dirname, 'original')).forEach(function(file) { var text = fs.readFileSync(path.resolve(__dirname, 'original', file)); - if (file.indexOf('hard_wrapped_paragraphs_with_list_like_lines.md') === 0) { + if (file === 'hard_wrapped_paragraphs_with_list_like_lines.md') { text = '---\ngfm: false\n---\n' + text; } + fs.writeFileSync(path.resolve(__dirname, 'compiled_tests', file), text); }); From 7ee001a88cf401c8bba88c8936dd918b7f2ee43e Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 10:58:38 -0600 Subject: [PATCH 15/17] minify --- marked.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marked.min.js b/marked.min.js index e0c8dd0fd5..9d330d3264 100644 --- a/marked.min.js +++ b/marked.min.js @@ -3,4 +3,4 @@ * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) * https://github.com/chjj/marked */ -(function(){function e(e){this.tokens=[],this.tokens.links={},this.options=e||p.defaults,this.rules=u.normal,this.options.gfm&&(this.options.tables?this.rules=u.tables:this.rules=u.gfm)}function t(e,t){if(this.options=t||p.defaults,this.links=e,this.rules=c.normal,this.renderer=this.options.renderer||new n,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=c.breaks:this.rules=c.gfm:this.options.pedantic&&(this.rules=c.pedantic)}function n(e){this.options=e||{}}function r(e){this.tokens=[],this.token=null,this.options=e||p.defaults,this.options.renderer=this.options.renderer||new n,this.renderer=this.options.renderer,this.renderer.options=this.options}function s(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function l(e,t){return e=e.source,t=t||"",function n(r,s){return r?(s=s.source||s,s=s.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,s),n):new RegExp(e,t)}}function o(e,t){return baseUrls[" "+e]||(/^[^:]+:\/*[^\/]*$/.test(e)?baseUrls[" "+e]=e+"/":baseUrls[" "+e]=e.replace(/[^\/]*$/,"")),e=baseUrls[" "+e],"//"===t.slice(0,2)?e.replace(/:[^]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^\/]*)[^]*/,"$1")+t:e+t}function h(){}function a(e){for(var t,n,r=1;rAn error occured:

"+s(c.message+"",!0)+"
";throw c}}var u={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:h,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:h,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:h,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};u.bullet=/(?:[*+-]|\d+\.)/,u.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,u.item=l(u.item,"gm")(/bull/g,u.bullet)(),u.list=l(u.list)(/bull/g,u.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+u.def.source+")")(),u._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",u.html=l(u.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,u._tag)(),u.paragraph=l(u.paragraph)("hr",u.hr)("heading",u.heading)("lheading",u.lheading)("blockquote",u.blockquote)("tag","<"+u._tag)("def",u.def)(),u.normal=a({},u),u.gfm=a({},u.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),u.gfm.paragraph=l(u.paragraph)("(?!","(?!"+u.gfm.fences.source.replace("\\1","\\2")+"|"+u.list.source.replace("\\1","\\3")+"|")(),u.tables=a({},u.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=u,e.lex=function(t,n){var r=new e(n);return r.lex(t)},e.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},e.prototype.token=function(e,t,n){for(var r,s,i,l,o,h,a,p,c,e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:i.replace(/\n+$/,"")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(t&&(i=this.rules.nptable.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/\n$/,"").split("\n")},p=0;p ?/gm,""),this.token(i,t,!0),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l=i[2],this.tokens.push({type:"list_start",ordered:l.length>1}),i=i[0].match(this.rules.item),r=!1,c=i.length,p=0;p1&&o.length>1||(e=i.slice(p+1).join("\n")+e,p=c-1)),s=r||/\n\n(?!\s*$)/.test(h),p!==c-1&&(r="\n"===h.charAt(h.length-1),s||(s=r)),this.tokens.push({type:s?"loose_item_start":"list_item_start"}),this.token(h,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(e))e=e.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===i[1]||"script"===i[1]||"style"===i[1]),text:i[0]});else if(!n&&t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),this.tokens.links[i[1].toLowerCase()]={href:i[2],title:i[3]};else if(t&&(i=this.rules.table.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/(?: *\| *)?\n$/,"").split("\n")},p=0;p])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:h,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:h,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,c.link=l(c.link)("inside",c._inside)("href",c._href)(),c.reflink=l(c.reflink)("inside",c._inside)(),c.normal=a({},c),c.pedantic=a({},c.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),c.gfm=a({},c.normal,{escape:l(c.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:l(c.text)("]|","~]|")("|","|https?://|")()}),c.breaks=a({},c.gfm,{br:l(c.br)("{2,}","*")(),text:l(c.gfm.text)("{2,}","*")()}),t.rules=c,t.output=function(e,n,r){var s=new t(n,r);return s.output(e)},t.prototype.output=function(e){for(var t,n,r,i,l="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),l+=i[1];else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=s(":"===i[1].charAt(6)?this.mangle(i[1].substring(7)):this.mangle(i[1])),r=this.mangle("mailto:")+n):(n=s(i[1]),r=n),l+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.tag.exec(e))!this.inLink&&/^/i.test(i[0])&&(this.inLink=!1),e=e.substring(i[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):s(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,l+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){l+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),l+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),l+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),l+=this.renderer.codespan(s(i[2].trim(),!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),l+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),l+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),l+=this.renderer.text(s(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=s(i[1]),r=n,l+=this.renderer.link(r,null,n);return l},t.prototype.outputLink=function(e,t){var n=s(t.href),r=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,s(e[1]))},t.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},t.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,s=0;s.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},n.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
'+(n?e:s(e,!0))+"\n
\n":"
"+(n?e:s(e,!0))+"\n
"},n.prototype.blockquote=function(e){return"
\n"+e+"
\n"},n.prototype.html=function(e){return e},n.prototype.heading=function(e,t,n){return"'+e+"\n"},n.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},n.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},n.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},n.prototype.paragraph=function(e){return"

    "+e+"

    \n"},n.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},n.prototype.tablerow=function(e){return"\n"+e+"\n"},n.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"\n"},n.prototype.strong=function(e){return""+e+""},n.prototype.em=function(e){return""+e+""},n.prototype.codespan=function(e){return""+e+""},n.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},n.prototype.del=function(e){return""+e+""},n.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(i(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(s){return""}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return""}this.options.baseUrl&&!originIndependentUrl.test(e)&&(e=o(this.options.baseUrl,e));var l='
    "},n.prototype.image=function(e,t,n){this.options.baseUrl&&!originIndependentUrl.test(e)&&(e=o(this.options.baseUrl,e));var r=''+n+'":">"},n.prototype.text=function(e){return e},r.parse=function(e,t,n){var s=new r(t,n);return s.parse(e)},r.prototype.parse=function(e){this.inline=new t(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var n="";this.next();)n+=this.tok();return n},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},r.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,s,i="",l="";for(n="",e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function l(e,t){return e=e.source,t=t||"",function n(r,s){return r?(s=s.source||s,s=s.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,s),n):new RegExp(e,t)}}function o(e,t){return g[" "+e]||(/^[^:]+:\/*[^\/]*$/.test(e)?g[" "+e]=e+"/":g[" "+e]=e.replace(/[^\/]*$/,"")),e=g[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^\/]*)[\s\S]*/,"$1")+t:e+t}function h(){}function a(e){for(var t,n,r=1;rAn error occurred:

    "+s(c.message+"",!0)+"
    ";throw c}}var u={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:h,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:h,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:h,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};u.bullet=/(?:[*+-]|\d+\.)/,u.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,u.item=l(u.item,"gm")(/bull/g,u.bullet)(),u.list=l(u.list)(/bull/g,u.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+u.def.source+")")(),u._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",u.html=l(u.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,u._tag)(),u.paragraph=l(u.paragraph)("hr",u.hr)("heading",u.heading)("lheading",u.lheading)("blockquote",u.blockquote)("tag","<"+u._tag)("def",u.def)(),u.normal=a({},u),u.gfm=a({},u.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),u.gfm.paragraph=l(u.paragraph)("(?!","(?!"+u.gfm.fences.source.replace("\\1","\\2")+"|"+u.list.source.replace("\\1","\\3")+"|")(),u.tables=a({},u.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=u,e.lex=function(t,n){var r=new e(n);return r.lex(t)},e.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},e.prototype.token=function(e,t,n){for(var r,s,i,l,o,h,a,p,c,e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:i.replace(/\n+$/,"")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(t&&(i=this.rules.nptable.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/\n$/,"").split("\n")},p=0;p ?/gm,""),this.token(i,t,!0),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l=i[2],this.tokens.push({type:"list_start",ordered:l.length>1}),i=i[0].match(this.rules.item),r=!1,c=i.length,p=0;p1&&o.length>1||(e=i.slice(p+1).join("\n")+e,p=c-1)),s=r||/\n\n(?!\s*$)/.test(h),p!==c-1&&(r="\n"===h.charAt(h.length-1),s||(s=r)),this.tokens.push({type:s?"loose_item_start":"list_item_start"}),this.token(h,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(e))e=e.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===i[1]||"script"===i[1]||"style"===i[1]),text:i[0]});else if(!n&&t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),this.tokens.links[i[1].toLowerCase()]={href:i[2],title:i[3]};else if(t&&(i=this.rules.table.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/(?: *\| *)?\n$/,"").split("\n")},p=0;p])/,autolink:/^<([^ <>]+(@|:\/)[^ <>]+)>/,url:h,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^<'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)([\s\S]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:h,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,c.link=l(c.link)("inside",c._inside)("href",c._href)(),c.reflink=l(c.reflink)("inside",c._inside)(),c.normal=a({},c),c.pedantic=a({},c.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),c.gfm=a({},c.normal,{escape:l(c.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:l(c.text)("]|","~]|")("|","|https?://|")()}),c.breaks=a({},c.gfm,{br:l(c.br)("{2,}","*")(),text:l(c.gfm.text)("{2,}","*")()}),t.rules=c,t.output=function(e,n,r){var s=new t(n,r);return s.output(e)},t.prototype.output=function(e){for(var t,n,r,i,l="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),l+=i[1];else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=s(":"===i[1].charAt(6)?this.mangle(i[1].substring(7)):this.mangle(i[1])),r=this.mangle("mailto:")+n):(n=s(i[1]),r=n),l+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.tag.exec(e))!this.inLink&&/^
    /i.test(i[0])&&(this.inLink=!1),e=e.substring(i[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):s(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,l+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){l+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),l+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),l+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),l+=this.renderer.codespan(s(i[2].trim(),!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),l+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),l+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),l+=this.renderer.text(s(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=s(i[1]),r=n,l+=this.renderer.link(r,null,n);return l},t.prototype.outputLink=function(e,t){var n=s(t.href),r=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,s(e[1]))},t.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},t.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,s=0;s.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},n.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
    '+(n?e:s(e,!0))+"\n
    \n":"
    "+(n?e:s(e,!0))+"\n
    "},n.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},n.prototype.html=function(e){return e},n.prototype.heading=function(e,t,n){return"'+e+"\n"},n.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},n.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},n.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},n.prototype.paragraph=function(e){return"

    "+e+"

    \n"},n.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},n.prototype.tablerow=function(e){return"\n"+e+"\n"},n.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"\n"},n.prototype.strong=function(e){return""+e+""},n.prototype.em=function(e){return""+e+""},n.prototype.codespan=function(e){return""+e+""},n.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},n.prototype.del=function(e){return""+e+""},n.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(i(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(s){return n}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return n}this.options.baseUrl&&!f.test(e)&&(e=o(this.options.baseUrl,e));var l='
    "},n.prototype.image=function(e,t,n){this.options.baseUrl&&!f.test(e)&&(e=o(this.options.baseUrl,e));var r=''+n+'":">"},n.prototype.text=function(e){return e},r.parse=function(e,t,n){var s=new r(t,n);return s.parse(e)},r.prototype.parse=function(e){this.inline=new t(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var n="";this.next();)n+=this.tok();return n},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},r.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,s,i="",l="";for(n="",e=0;e Date: Sat, 6 Jan 2018 11:56:47 -0600 Subject: [PATCH 16/17] clean up --- README.md | 2 +- test/index.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5450d26f25..8cfec5cc35 100644 --- a/README.md +++ b/README.md @@ -374,7 +374,7 @@ markdown.pl tests. In other words, if you have a test to add, add it to `test/new/`. If your test uses a certain feature, for example, maybe it assumes GFM is *not* enabled, you can add [front-matter](https://www.npmjs.com/package/front-matter) to the top of -your .md file +your `.md` file ``` yml --- diff --git a/test/index.js b/test/index.js index 9a79ab27fa..91916d9883 100644 --- a/test/index.js +++ b/test/index.js @@ -46,7 +46,6 @@ function load() { file = path.join(dir, list[i]); content = fm(fs.readFileSync(file, 'utf8')); - files[path.basename(file)] = { options: content.attributes, text: content.body, @@ -418,6 +417,7 @@ function fix() { function parseArg(argv) { var argv = process.argv.slice(2) , options = {} + , opt = "" , orphans = [] , arg; @@ -477,7 +477,7 @@ function parseArg(argv) { break; default: if (arg.indexOf('--') === 0) { - var opt = camelize(arg.replace(/^--(no-)?/, '')); + opt = camelize(arg.replace(/^--(no-)?/, '')); if (!marked.defaults.hasOwnProperty(opt)) { continue; } @@ -523,6 +523,7 @@ function main(argv) { } if (opt.fix) { + // only run fix return; } From 33b8848964111dd254d230b4502d98f0b5933fc7 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Sat, 6 Jan 2018 14:59:21 -0600 Subject: [PATCH 17/17] add error message on bench --- test/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/index.js b/test/index.js index 91916d9883..26f3952296 100644 --- a/test/index.js +++ b/test/index.js @@ -270,7 +270,7 @@ function runBench(options) { }; })()); } catch (e) { - console.log('Could not bench showdown.'); + console.log('Could not bench showdown. (Error: %s)', e.message); } // markdown-it @@ -283,7 +283,7 @@ function runBench(options) { }; })()); } catch (e) { - console.log('Could not bench markdown-it.'); + console.log('Could not bench markdown-it. (Error: %s)', e.message); } // markdown.js @@ -295,7 +295,7 @@ function runBench(options) { }; })()); } catch (e) { - console.log('Could not bench markdown.js.'); + console.log('Could not bench markdown.js. (Error: %s)', e.message); } return true;