kramdown-asciidoc 1.0.0.alpha.3 → 1.0.0.alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +25 -0
- data/README.adoc +3 -2
- data/bin/kramdoc +1 -1
- data/kramdown-asciidoc.gemspec +3 -3
- data/lib/kramdown-asciidoc.rb +2 -3
- data/lib/kramdown-asciidoc/converter.rb +85 -47
- data/lib/kramdown-asciidoc/version.rb +1 -1
- data/spec/converter_spec.rb +139 -10
- data/spec/integration_spec.rb +3 -5
- data/spec/{fixtures → scenarios}/a/bare-url.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/bare-url.md +0 -0
- data/spec/{fixtures → scenarios}/a/containing-inline-image.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/containing-inline-image.md +0 -0
- data/spec/{fixtures → scenarios}/a/double-underscore-in-url.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/double-underscore-in-url.md +0 -0
- data/spec/{fixtures → scenarios}/a/interdoc-xref.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/interdoc-xref.md +0 -0
- data/spec/{fixtures → scenarios}/a/internal.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/internal.md +0 -0
- data/spec/{fixtures → scenarios}/a/local.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/local.md +0 -0
- data/spec/scenarios/a/url-matches-text.adoc +2 -0
- data/spec/scenarios/a/url-matches-text.md +2 -0
- data/spec/{fixtures → scenarios}/a/url-with-text.adoc +0 -0
- data/spec/{fixtures → scenarios}/a/url-with-text.md +0 -0
- data/spec/{fixtures/blockquote/with-attribution.adoc → scenarios/blockquote/attribution-separated.adoc} +0 -0
- data/spec/scenarios/blockquote/attribution-separated.md +4 -0
- data/spec/{fixtures → scenarios}/blockquote/basic.adoc +0 -0
- data/spec/{fixtures → scenarios}/blockquote/basic.md +0 -0
- data/spec/scenarios/blockquote/deep-nested.adoc +14 -0
- data/spec/scenarios/blockquote/deep-nested.md +6 -0
- data/spec/{fixtures → scenarios}/blockquote/list.adoc +0 -0
- data/spec/{fixtures → scenarios}/blockquote/list.md +0 -0
- data/spec/{fixtures → scenarios}/blockquote/multiple-lines.adoc +0 -0
- data/spec/{fixtures → scenarios}/blockquote/multiple-lines.md +0 -0
- data/spec/{fixtures → scenarios}/blockquote/nested.adoc +0 -0
- data/spec/{fixtures → scenarios}/blockquote/nested.md +0 -0
- data/spec/scenarios/blockquote/with-attribution.adoc +5 -0
- data/spec/{fixtures → scenarios}/blockquote/with-attribution.md +0 -0
- data/spec/scenarios/br/leading-tag.adoc +2 -0
- data/spec/scenarios/br/leading-tag.md +2 -0
- data/spec/{fixtures → scenarios}/br/tag-followed-by-newline.adoc +0 -0
- data/spec/{fixtures → scenarios}/br/tag-followed-by-newline.md +0 -0
- data/spec/{fixtures → scenarios}/br/tag-in-table-cell.adoc +0 -0
- data/spec/{fixtures → scenarios}/br/tag-in-table-cell.md +0 -0
- data/spec/{fixtures → scenarios}/br/tag-preceded-by-space.adoc +0 -0
- data/spec/{fixtures → scenarios}/br/tag-preceded-by-space.md +0 -0
- data/spec/{fixtures → scenarios}/br/tag.adoc +0 -0
- data/spec/{fixtures → scenarios}/br/tag.md +0 -0
- data/spec/{fixtures → scenarios}/br/trailing-double-space.adoc +0 -0
- data/spec/{fixtures → scenarios}/br/trailing-double-space.md +0 -0
- data/spec/scenarios/codeblock/contiguous-lines.adoc +3 -0
- data/spec/{fixtures → scenarios}/codeblock/contiguous-lines.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-command-prompt.adoc +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-command-prompt.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-language.adoc +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-language.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-non-contiguous-command-prompts.adoc +3 -2
- data/spec/{fixtures → scenarios}/codeblock/fenced/with-non-contiguous-command-prompts.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/without-language.adoc +0 -0
- data/spec/{fixtures → scenarios}/codeblock/fenced/without-language.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/non-contiguous-lines.adoc +2 -2
- data/spec/{fixtures → scenarios}/codeblock/non-contiguous-lines.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/with-command-prompt.adoc +0 -0
- data/spec/{fixtures → scenarios}/codeblock/with-command-prompt.md +0 -0
- data/spec/{fixtures → scenarios}/codeblock/with-non-contiguous-command-prompts.adoc +3 -2
- data/spec/{fixtures → scenarios}/codeblock/with-non-contiguous-command-prompts.md +0 -0
- data/spec/{fixtures → scenarios}/codespan/constrained.adoc +0 -0
- data/spec/{fixtures → scenarios}/codespan/constrained.md +0 -0
- data/spec/{fixtures → scenarios}/codespan/literal.adoc +0 -0
- data/spec/{fixtures → scenarios}/codespan/literal.md +0 -0
- data/spec/scenarios/dlist/compound.adoc +13 -0
- data/spec/scenarios/dlist/compound.md +7 -0
- data/spec/scenarios/dlist/nested-mixed.adoc +11 -0
- data/spec/scenarios/dlist/nested-mixed.md +11 -0
- data/spec/scenarios/dlist/nested.adoc +23 -0
- data/spec/scenarios/dlist/nested.md +23 -0
- data/spec/scenarios/dlist/simple.adoc +5 -0
- data/spec/scenarios/dlist/simple.md +5 -0
- data/spec/{fixtures → scenarios}/em/asterisks.adoc +0 -0
- data/spec/{fixtures → scenarios}/em/asterisks.md +0 -0
- data/spec/scenarios/em/constrained.adoc +1 -0
- data/spec/scenarios/em/constrained.md +1 -0
- data/spec/scenarios/em/strong.adoc +1 -0
- data/spec/scenarios/em/strong.md +1 -0
- data/spec/{fixtures → scenarios}/entity/numeric.adoc +0 -0
- data/spec/{fixtures → scenarios}/entity/numeric.md +0 -0
- data/spec/{fixtures → scenarios}/entity/reverse.adoc +0 -0
- data/spec/{fixtures → scenarios}/entity/reverse.md +0 -0
- data/spec/{fixtures → scenarios}/heading/block-title.adoc +1 -0
- data/spec/{fixtures → scenarios}/heading/block-title.md +3 -1
- data/spec/{fixtures → scenarios}/heading/not-block-title.adoc +0 -0
- data/spec/{fixtures → scenarios}/heading/not-block-title.md +0 -0
- data/spec/{fixtures → scenarios}/heading/out-of-sequence.adoc +0 -0
- data/spec/{fixtures → scenarios}/heading/out-of-sequence.md +0 -0
- data/spec/{fixtures → scenarios}/heading/outline.adoc +0 -0
- data/spec/{fixtures → scenarios}/heading/outline.md +0 -0
- data/spec/{fixtures → scenarios}/heading/with-anchor.adoc +0 -0
- data/spec/{fixtures → scenarios}/heading/with-anchor.md +0 -0
- data/spec/{fixtures → scenarios}/heading/with-formatting.adoc +0 -0
- data/spec/{fixtures → scenarios}/heading/with-formatting.md +0 -0
- data/spec/scenarios/hr/around-block.adoc +5 -0
- data/spec/scenarios/hr/around-block.md +5 -0
- data/spec/{fixtures → scenarios}/hr/between-blocks.adoc +0 -0
- data/spec/{fixtures → scenarios}/hr/between-blocks.md +0 -0
- data/spec/{fixtures → scenarios}/hr/dashes.adoc +0 -0
- data/spec/{fixtures → scenarios}/hr/dashes.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/abbr.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/abbr.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/admonition.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/admonition.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/empty-p.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/empty-p.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/heading-with-class.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/heading-with-class.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/heading-with-id.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/heading-with-id.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/img-with-alt-and-width.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/img-with-alt-and-width.md +0 -0
- data/spec/scenarios/html_element/img-with-percentage-width-css.adoc +1 -0
- data/spec/scenarios/html_element/img-with-percentage-width-css.md +1 -0
- data/spec/scenarios/html_element/img-with-percentage-width.adoc +1 -0
- data/spec/scenarios/html_element/img-with-percentage-width.md +1 -0
- data/spec/{fixtures/html_element/img-with-css-width.adoc → scenarios/html_element/img-with-width-css.adoc} +0 -0
- data/spec/{fixtures/html_element/img-with-css-width.md → scenarios/html_element/img-with-width-css.md} +0 -0
- data/spec/{fixtures → scenarios}/html_element/img-with-width.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/img-with-width.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/img.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/img.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/native.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/native.md +0 -0
- data/spec/scenarios/html_element/pre-code-with-language.adoc +6 -0
- data/spec/scenarios/html_element/pre-code-with-language.md +4 -0
- data/spec/scenarios/html_element/strike.adoc +1 -0
- data/spec/scenarios/html_element/strike.md +1 -0
- data/spec/{fixtures → scenarios}/html_element/sub.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/sub.md +0 -0
- data/spec/{fixtures → scenarios}/html_element/sup.adoc +0 -0
- data/spec/{fixtures → scenarios}/html_element/sup.md +0 -0
- data/spec/scenarios/img/block-in-list.adoc +5 -0
- data/spec/scenarios/img/block-in-list.md +5 -0
- data/spec/{fixtures → scenarios}/img/block-with-alt.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/block-with-alt.md +0 -0
- data/spec/{fixtures → scenarios}/img/block-with-link-and-alt.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/block-with-link-and-alt.md +0 -0
- data/spec/{fixtures → scenarios}/img/block-with-link.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/block-with-link.md +0 -0
- data/spec/{fixtures → scenarios}/img/block.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/block.md +0 -0
- data/spec/{fixtures → scenarios}/img/imagesdir.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/imagesdir.md +0 -0
- data/spec/{fixtures → scenarios}/img/imagesdir.opts +0 -0
- data/spec/{fixtures → scenarios}/img/implicit-imagesdir.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/implicit-imagesdir.md +0 -0
- data/spec/{fixtures → scenarios}/img/implicit-imagesdir.opts +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-alt.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-alt.md +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-link-and-alt.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-link-and-alt.md +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-link.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/inline-with-link.md +0 -0
- data/spec/{fixtures → scenarios}/img/inline.adoc +0 -0
- data/spec/{fixtures → scenarios}/img/inline.md +0 -0
- data/spec/{fixtures → scenarios}/ol/compound-separated.adoc +5 -1
- data/spec/{fixtures/ol/compound.md → scenarios/ol/compound-separated.md} +8 -1
- data/spec/{fixtures → scenarios}/ol/compound.adoc +5 -1
- data/spec/{fixtures/ol/compound-separated.md → scenarios/ol/compound.md} +3 -6
- data/spec/scenarios/ol/formatted.adoc +3 -0
- data/spec/scenarios/ol/formatted.md +3 -0
- data/spec/{fixtures → scenarios}/ol/mixed-separated.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/mixed-separated.md +0 -0
- data/spec/{fixtures → scenarios}/ol/mixed.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/mixed.md +0 -0
- data/spec/scenarios/ol/nested-mixed.adoc +8 -0
- data/spec/scenarios/ol/nested-mixed.md +8 -0
- data/spec/{fixtures → scenarios}/ol/nested-separated.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/nested-separated.md +0 -0
- data/spec/{fixtures → scenarios}/ol/nested.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/nested.md +0 -0
- data/spec/{fixtures → scenarios}/ol/simple-separated.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/simple-separated.md +0 -0
- data/spec/{fixtures → scenarios}/ol/simple.adoc +0 -0
- data/spec/{fixtures → scenarios}/ol/simple.md +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/emphasis.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/emphasis.md +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/in-list-item.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/in-list-item.md +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/plain.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/plain.md +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/strong-emphasis.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/admonition/strong-emphasis.md +0 -0
- data/spec/{fixtures → scenarios}/p/multiple-lines.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/multiple-lines.md +0 -0
- data/spec/{fixtures → scenarios}/p/sequential.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/sequential.md +0 -0
- data/spec/{fixtures → scenarios}/p/single-line.adoc +0 -0
- data/spec/{fixtures → scenarios}/p/single-line.md +0 -0
- data/spec/{fixtures → scenarios}/root/body-only.adoc +0 -0
- data/spec/{fixtures → scenarios}/root/body-only.md +0 -0
- data/spec/{fixtures → scenarios}/root/book-doctype.adoc +0 -0
- data/spec/{fixtures → scenarios}/root/book-doctype.md +0 -0
- data/spec/{fixtures → scenarios}/root/header-and-body.adoc +0 -0
- data/spec/{fixtures → scenarios}/root/header-and-body.md +0 -0
- data/spec/{fixtures → scenarios}/root/header-only.adoc +0 -0
- data/spec/{fixtures → scenarios}/root/header-only.md +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/apostrophe.adoc +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/apostrophe.md +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/double-quotes.adoc +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/double-quotes.md +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/single-quotes.adoc +0 -0
- data/spec/{fixtures → scenarios}/smart_quote/single-quotes.md +0 -0
- data/spec/scenarios/strong/constrained.adoc +1 -0
- data/spec/scenarios/strong/constrained.md +1 -0
- data/spec/scenarios/strong/menu.adoc +3 -0
- data/spec/scenarios/strong/menu.md +1 -0
- data/spec/{fixtures → scenarios}/strong/nested-emphasis.adoc +0 -0
- data/spec/{fixtures → scenarios}/strong/nested-emphasis.md +0 -0
- data/spec/{fixtures → scenarios}/table/alignment.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/alignment.md +0 -0
- data/spec/scenarios/table/cell-with-image.adoc +9 -0
- data/spec/scenarios/table/cell-with-image.md +4 -0
- data/spec/{fixtures → scenarios}/table/cell-with-pipe.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/cell-with-pipe.md +0 -0
- data/spec/{fixtures → scenarios}/table/single-column-with-header.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/single-column-with-header.md +0 -0
- data/spec/{fixtures → scenarios}/table/single-column-without-header.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/single-column-without-header.md +0 -0
- data/spec/{fixtures → scenarios}/table/with-header.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/with-header.md +0 -0
- data/spec/{fixtures → scenarios}/table/without-header.adoc +0 -0
- data/spec/{fixtures → scenarios}/table/without-header.md +0 -0
- data/spec/{fixtures → scenarios}/text/caret.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/caret.md +0 -0
- data/spec/{fixtures → scenarios}/text/lte.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/lte.md +0 -0
- data/spec/{fixtures → scenarios}/text/plus-plus.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/plus-plus.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/apostrophe.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/apostrophe.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/double-quotes.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/double-quotes.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/ellipsis.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/ellipsis.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/mdash.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/mdash.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/ndash.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/ndash.md +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/single-quotes.adoc +0 -0
- data/spec/{fixtures → scenarios}/text/typographic_sym/single-quotes.md +0 -0
- data/spec/scenarios/trailing_space.adoc +7 -0
- data/spec/scenarios/trailing_space.md +7 -0
- data/spec/{fixtures → scenarios}/typographic_sym/ellipsis.adoc +0 -0
- data/spec/{fixtures → scenarios}/typographic_sym/ellipsis.md +0 -0
- data/spec/{fixtures → scenarios}/typographic_sym/mdash.adoc +0 -0
- data/spec/{fixtures → scenarios}/typographic_sym/mdash.md +0 -0
- data/spec/{fixtures → scenarios}/typographic_sym/ndash.adoc +0 -0
- data/spec/{fixtures → scenarios}/typographic_sym/ndash.md +0 -0
- data/spec/scenarios/ul/blockquote.adoc +5 -0
- data/spec/scenarios/ul/blockquote.md +2 -0
- data/spec/scenarios/ul/compound-nested.adoc +21 -0
- data/spec/scenarios/ul/compound-nested.md +17 -0
- data/spec/{fixtures → scenarios}/ul/compound-separated.adoc +5 -1
- data/spec/{fixtures/ul/compound.md → scenarios/ul/compound-separated.md} +8 -1
- data/spec/{fixtures → scenarios}/ul/compound.adoc +5 -1
- data/spec/{fixtures/ul/compound-separated.md → scenarios/ul/compound.md} +3 -6
- data/spec/scenarios/ul/formatted.adoc +3 -0
- data/spec/scenarios/ul/formatted.md +3 -0
- data/spec/{fixtures → scenarios}/ul/nested-separated.adoc +0 -0
- data/spec/{fixtures → scenarios}/ul/nested-separated.md +0 -0
- data/spec/{fixtures → scenarios}/ul/nested.adoc +0 -0
- data/spec/{fixtures → scenarios}/ul/nested.md +0 -0
- data/spec/{fixtures → scenarios}/ul/simple-separated.adoc +0 -0
- data/spec/{fixtures → scenarios}/ul/simple-separated.md +0 -0
- data/spec/{fixtures → scenarios}/ul/simple.adoc +0 -0
- data/spec/{fixtures → scenarios}/ul/simple.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/above-header.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/above-header.md +0 -0
- data/spec/scenarios/xml_comment/at-start-of-line.adoc +9 -0
- data/spec/scenarios/xml_comment/at-start-of-line.md +4 -0
- data/spec/{fixtures → scenarios}/xml_comment/block.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/block.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/line-offset-by-space.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/line-offset-by-space.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/line.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/line.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/list-separator.adoc +1 -1
- data/spec/{fixtures → scenarios}/xml_comment/list-separator.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/mixed.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/mixed.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/multiline-span.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/multiline-span.md +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/styled.adoc +0 -0
- data/spec/{fixtures → scenarios}/xml_comment/styled.md +0 -0
- metadata +574 -482
- data/spec/fixtures/a/url-matches-text.adoc +0 -1
- data/spec/fixtures/a/url-matches-text.md +0 -1
- data/spec/fixtures/codeblock/contiguous-lines.adoc +0 -5
- data/spec/fixtures/em/constrained.adoc +0 -1
- data/spec/fixtures/em/constrained.md +0 -1
- data/spec/fixtures/strong/constrained.adoc +0 -1
- data/spec/fixtures/strong/constrained.md +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53feb28cc869ddb3f85b8806d347ca52198d57f723505c65bad3ebc20390fd67
|
4
|
+
data.tar.gz: a33879646334f075770400e329ba801e9aa0865d36d2bcc98e6392edd5dd1b84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6428d7de7c8aa6a729b4ccb14b825afcff1855f4b3ec8f9786469c020eb8694b284276ee41e7b9f0e19743e703ba6de1e6ac11c2a408a992e99d5f8a90a40355
|
7
|
+
data.tar.gz: ff5cb27de8a2416771e40125015e2fe2fc8c5cdb60adbe8b4cad363761b13598c97a72b0fa75962181b92c8971ef29a7e0e77f5b4bb41b8712abd6d17bc6360d
|
data/CHANGELOG.adoc
CHANGED
@@ -5,6 +5,31 @@
|
|
5
5
|
This document provides a high-level view of the changes to {project-name} by release.
|
6
6
|
For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
|
7
7
|
|
8
|
+
== 1.0.0.alpha.4 (2018-06-12) - @mojavelinux
|
9
|
+
|
10
|
+
=== Added
|
11
|
+
|
12
|
+
* convert description (aka definition) lists (#8)
|
13
|
+
* detect menu reference and convert to inline menu macro
|
14
|
+
* add blank line above nested list that follows compound list item
|
15
|
+
* convert codeblock with non-contiguous lines beginning with a command prompt to a source,console listing block
|
16
|
+
* use list continuation to attach blockquote to list item
|
17
|
+
* handle case when HTML br element appears at start of paragraph
|
18
|
+
* allow blockquotes to be nested to an arbitrary depth
|
19
|
+
* remove trailing spaces from output
|
20
|
+
* convert deleted text span
|
21
|
+
|
22
|
+
=== Changed
|
23
|
+
|
24
|
+
* use title from front matter as document title if explicit document title (level 1 heading) is absent
|
25
|
+
* automatically convert newlines to LF when reading file
|
26
|
+
* convert indented codeblock to literal (indented) paragraph
|
27
|
+
* change separator comment from //- to //
|
28
|
+
* mark br converted from HTML br element
|
29
|
+
* round CSS width value for image
|
30
|
+
* upgrade kramdown to 1.17.0
|
31
|
+
* use correct casing for kramdown in README and library metadata
|
32
|
+
|
8
33
|
== 1.0.0.alpha.3 (2018-05-31) - @mojavelinux
|
9
34
|
|
10
35
|
=== Added
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= {project-name} (Markdown to AsciiDoc)
|
2
2
|
Dan Allen <https://github.com/mojavelinux>
|
3
|
-
v1.0.0.alpha.
|
3
|
+
v1.0.0.alpha.4, 2018-06-12
|
4
4
|
// Aliases:
|
5
5
|
:project-name: Kramdown AsciiDoc
|
6
6
|
:project-handle: kramdown-asciidoc
|
@@ -22,6 +22,7 @@ endif::[]
|
|
22
22
|
:uri-repo: https://github.com/asciidoctor/kramdown-asciidoc
|
23
23
|
:uri-asciidoc: https://asciidoctor.org/docs/what-is-asciidoc/#what-is-asciidoc
|
24
24
|
:uri-asciidoctor: https://asciidoctor.org
|
25
|
+
:uri-kramdown: https://kramdown.gettalong.org
|
25
26
|
:uri-rvm: https://rvm.io
|
26
27
|
:uri-rvm-install: https://rvm.io/rvm/install
|
27
28
|
:uri-ci-travis: https://travis-ci.org/asciidoctor/kramdown-asciidoc
|
@@ -34,7 +35,7 @@ image:{uri-gem-img}[Gem Version,link={uri-gem}]
|
|
34
35
|
image:{uri-ci-travis-img}[Build Status (Travis CI),link={uri-ci-travis}]
|
35
36
|
endif::[]
|
36
37
|
|
37
|
-
{uri-repo}[{project-name}] (gem: *{project-handle}*) is a
|
38
|
+
{uri-repo}[{project-name}] (gem: *{project-handle}*) is a {uri-kramdown}[kramdown] extension for converting Markdown documents to {uri-asciidoc}[AsciiDoc].
|
38
39
|
Notably, the converter generates modern AsciiDoc syntax suitable for use with {uri-asciidoctor}[Asciidoctor].
|
39
40
|
|
40
41
|
== Prerequisites
|
data/bin/kramdoc
CHANGED
@@ -12,7 +12,7 @@ unless infile
|
|
12
12
|
exit 1
|
13
13
|
end
|
14
14
|
outfile = %(#{infile.slice 0, infile.length - (File.extname infile).length}.adoc)
|
15
|
-
input = (IO.read infile,
|
15
|
+
input = (IO.read infile, mode: 'r:UTF-8', newline: :universal).rstrip
|
16
16
|
input = input.slice 1, input.length while input.start_with? ?\n
|
17
17
|
attributes = {}
|
18
18
|
input = Kramdown::AsciiDoc.extract_front_matter input, attributes
|
data/kramdown-asciidoc.gemspec
CHANGED
@@ -4,8 +4,8 @@ require 'open3' unless defined? Open3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'kramdown-asciidoc'
|
6
6
|
s.version = Kramdown::AsciiDoc::VERSION
|
7
|
-
s.summary = 'A Markdown to AsciiDoc converter based on
|
8
|
-
s.description = 'A
|
7
|
+
s.summary = 'A Markdown to AsciiDoc converter based on kramdown'
|
8
|
+
s.description = 'A kramdown extension for converting Markdown documents to AsciiDoc.'
|
9
9
|
|
10
10
|
s.authors = ['Dan Allen']
|
11
11
|
s.email = ['dan.j.allen@gmail.com']
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
#s.rdoc_options = ['--charset=UTF-8']
|
35
35
|
#s.extra_rdoc_files = ['CHANGELOG.adoc', 'LICENSE.adoc']
|
36
36
|
|
37
|
-
s.add_runtime_dependency 'kramdown', '~> 1.
|
37
|
+
s.add_runtime_dependency 'kramdown', '~> 1.17.0'
|
38
38
|
s.add_development_dependency 'rake', '~> 12.3.1'
|
39
39
|
s.add_development_dependency 'rspec', '~> 3.7.0'
|
40
40
|
s.add_development_dependency 'simplecov', '~> 0.16.1'
|
data/lib/kramdown-asciidoc.rb
CHANGED
@@ -2,12 +2,11 @@ require 'kramdown'
|
|
2
2
|
require_relative 'kramdown-asciidoc/converter'
|
3
3
|
autoload :YAML, 'yaml'
|
4
4
|
|
5
|
-
# REMOVE once Kramdown > 1.16.2 is released
|
6
5
|
class Kramdown::Parser::Html::ElementConverter
|
7
6
|
def convert_br el
|
8
|
-
el.options.
|
7
|
+
el.options.replace location: el.options[:location], html_tag: true
|
9
8
|
el.type = el.value.to_sym
|
10
|
-
el.value =
|
9
|
+
el.value = nil
|
11
10
|
nil
|
12
11
|
end
|
13
12
|
end
|
@@ -19,24 +19,23 @@ module Kramdown; module AsciiDoc
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
# TODO return original source if YAML can't be parsed
|
22
23
|
def self.extract_front_matter source, attributes
|
23
|
-
if (line_i = (lines = source.each_line).
|
24
|
+
if (line_i = (lines = source.each_line).first) && line_i.chomp == '---'
|
24
25
|
lines = lines.drop 1
|
25
26
|
front_matter = []
|
26
27
|
while (line = lines.shift) && line.chomp != '---'
|
27
28
|
front_matter << line
|
28
29
|
end
|
30
|
+
return source unless line && line.chomp == '---' && !(front_matter.include? ?\n)
|
29
31
|
lines.shift while (line = lines[0]) && line == ?\n
|
30
32
|
(::YAML.load front_matter.join).each do |key, val|
|
31
|
-
|
32
|
-
when 'title'
|
33
|
-
# skip
|
34
|
-
when 'layout'
|
33
|
+
if key == 'layout'
|
35
34
|
attributes['page-layout'] = val unless val == 'default'
|
36
35
|
else
|
37
36
|
attributes[key] = val.to_s
|
38
37
|
end
|
39
|
-
end
|
38
|
+
end unless front_matter.empty?
|
40
39
|
lines.join
|
41
40
|
else
|
42
41
|
source
|
@@ -49,6 +48,7 @@ module Kramdown; module AsciiDoc
|
|
49
48
|
ADMON_MARKERS = ADMON_LABELS.map {|l, _| %(#{l}: ) }
|
50
49
|
ADMON_FORMATTED_MARKERS = ADMON_LABELS.map {|l, _| [%(#{l}:), l] }.to_h
|
51
50
|
ADMON_TYPE_MAP = ADMON_LABELS.map {|l, _| [l, l.upcase] }.to_h.merge 'Attention' => 'IMPORTANT'
|
51
|
+
DLIST_MARKERS = %w(:: ;; ::: ::::)
|
52
52
|
# FIXME here we reverse the smart quotes; add option to allow them (needs to be handled carefully)
|
53
53
|
SMART_QUOTE_ENTITY_TO_MARKUP = { ldquo: ?", rdquo: ?", lsquo: ?', rsquo: ?' }
|
54
54
|
TYPOGRAPHIC_SYMBOL_TO_MARKUP = {
|
@@ -80,8 +80,10 @@ module Kramdown; module AsciiDoc
|
|
80
80
|
ApostropheRx = /\b’\b/
|
81
81
|
CommentPrefixRx = /^ *! ?/m
|
82
82
|
CssPropDelimRx = /\s*;\s*/
|
83
|
+
MenuRefRx = /^([\p{Word}&].*?)\s>\s([\p{Word}&].*(?:\s>\s|$))+/
|
83
84
|
ReplaceableTextRx = /[-=]>|<[-=]|\.\.\./
|
84
85
|
StartOfLinesRx = /^/m
|
86
|
+
TrailingSpaceRx = / +$/
|
85
87
|
TypographicSymbolRx = /[“”‘’—–…]/
|
86
88
|
XmlCommentRx = /\A<!--(.*)-->\Z/m
|
87
89
|
|
@@ -104,7 +106,10 @@ module Kramdown; module AsciiDoc
|
|
104
106
|
|
105
107
|
def convert_root el, opts
|
106
108
|
el = extract_prologue el, opts
|
107
|
-
body = %(#{inner el, (opts.merge rstrip: true)}#{LF})
|
109
|
+
body = %(#{(inner el, (opts.merge rstrip: true)).gsub TrailingSpaceRx, ''}#{LF})
|
110
|
+
if (fallback_doctitle = @attributes.delete 'title')
|
111
|
+
@header << %(= #{fallback_doctitle}) if @header.empty?
|
112
|
+
end
|
108
113
|
@attributes.each {|k, v| @header << %(:#{k}: #{v}) } unless @attributes.empty?
|
109
114
|
@header.empty? ? body : %(#{@header.join LF}#{body == LF ? '' : LFx2}#{body})
|
110
115
|
end
|
@@ -150,7 +155,7 @@ module Kramdown; module AsciiDoc
|
|
150
155
|
alias convert_header convert_heading
|
151
156
|
|
152
157
|
def convert_p el, opts
|
153
|
-
if (parent = opts[:parent]) && parent.type == :li
|
158
|
+
if (parent = opts[:parent]) && (parent.type == :li || parent.type == :dd)
|
154
159
|
# NOTE :prev option not set indicates primary text; convert_li appends LF
|
155
160
|
return inner el, opts unless opts[:prev]
|
156
161
|
parent.options[:compound] = true
|
@@ -185,9 +190,18 @@ module Kramdown; module AsciiDoc
|
|
185
190
|
# TODO detect admonition masquerading as blockquote
|
186
191
|
def convert_blockquote el, opts
|
187
192
|
result = []
|
188
|
-
|
189
|
-
|
190
|
-
|
193
|
+
if (parent = opts[:parent]) && (parent.type == :li || parent.type == :dd)
|
194
|
+
parent.options[:compound] = true
|
195
|
+
list_continuation = %(#{LF}+)
|
196
|
+
suffix = ''
|
197
|
+
else
|
198
|
+
suffix = LFx2
|
199
|
+
end
|
200
|
+
if (current_line = opts[:result].pop)
|
201
|
+
opts[:result] << current_line.chomp
|
202
|
+
end
|
203
|
+
boundary = '____' + ((depth = opts[:blockquote_depth] || 0) > 0 ? '__' * depth : '')
|
204
|
+
contents = inner el, (opts.merge rstrip: true, blockquote_depth: depth + 1)
|
191
205
|
if (contents.include? LF) && ((attribution_line = (lines = contents.split LF).pop).start_with? '-- ')
|
192
206
|
attribution = attribution_line.slice 3, attribution_line.length
|
193
207
|
result << %([,#{attribution}])
|
@@ -197,12 +211,13 @@ module Kramdown; module AsciiDoc
|
|
197
211
|
result << boundary
|
198
212
|
result << contents
|
199
213
|
result << boundary
|
200
|
-
|
214
|
+
result.unshift list_continuation if list_continuation
|
215
|
+
%(#{result.join LF}#{suffix})
|
201
216
|
end
|
202
217
|
|
203
218
|
def convert_codeblock el, opts
|
204
219
|
result = []
|
205
|
-
if (parent = opts[:parent]) && parent.type == :li
|
220
|
+
if (parent = opts[:parent]) && (parent.type == :li || parent.type == :dd)
|
206
221
|
parent.options[:compound] = true
|
207
222
|
if (current_line = opts[:result].pop)
|
208
223
|
opts[:result] << current_line.chomp
|
@@ -214,24 +229,23 @@ module Kramdown; module AsciiDoc
|
|
214
229
|
end
|
215
230
|
contents = el.value.rstrip
|
216
231
|
if (lang = el.attr['class'])
|
217
|
-
|
232
|
+
# NOTE Kramdown always prefixes class with language-
|
218
233
|
# TODO remap lang if requested
|
219
|
-
result << %([source,#{lang}])
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
result << '....'
|
225
|
-
result << contents
|
226
|
-
result << '....'
|
227
|
-
else
|
228
|
-
list_continuation = LF if list_continuation
|
229
|
-
result << (contents.gsub StartOfLinesRx, ' ')
|
230
|
-
end
|
231
|
-
else
|
234
|
+
result << %([source,#{lang = lang.slice 9, lang.length}])
|
235
|
+
elsif (prompt = contents.start_with? '$ ')
|
236
|
+
result << %([source,#{lang = 'console'}]) if contents.include? LFx2
|
237
|
+
end
|
238
|
+
if lang || (el.options[:fenced] && !prompt)
|
232
239
|
result << '----'
|
233
240
|
result << contents
|
234
241
|
result << '----'
|
242
|
+
elsif !prompt && (contents.include? LFx2)
|
243
|
+
result << '....'
|
244
|
+
result << contents
|
245
|
+
result << '....'
|
246
|
+
else
|
247
|
+
list_continuation = LF if list_continuation
|
248
|
+
result << (contents.gsub StartOfLinesRx, ' ')
|
235
249
|
end
|
236
250
|
result.unshift list_continuation if list_continuation
|
237
251
|
%(#{result.join LF}#{suffix})
|
@@ -239,29 +253,44 @@ module Kramdown; module AsciiDoc
|
|
239
253
|
|
240
254
|
def convert_ul el, opts
|
241
255
|
# TODO create do_in_level block
|
242
|
-
level = opts[:
|
256
|
+
level = opts[:list_level] ? (opts[:list_level] += 1) : (opts[:list_level] = 1)
|
243
257
|
# REVIEW this is whack
|
244
|
-
|
258
|
+
if (parent = opts[:parent]) && (parent.type == :li || parent.type == :dd)
|
259
|
+
prefix = parent.options[:compound] ? LFx2 : (opts[:result][-1] ? '' : LF)
|
260
|
+
else
|
261
|
+
prefix = ''
|
262
|
+
end
|
245
263
|
contents = inner el, (opts.merge rstrip: true)
|
246
264
|
if level == 1
|
247
265
|
suffix = LFx2
|
248
|
-
opts.delete :
|
266
|
+
opts.delete :list_level
|
249
267
|
else
|
250
268
|
suffix = LF
|
251
|
-
opts[:
|
269
|
+
opts[:list_level] -= 1
|
252
270
|
end
|
253
271
|
%(#{prefix}#{contents}#{suffix})
|
254
272
|
end
|
255
273
|
|
256
274
|
alias convert_ol convert_ul
|
275
|
+
alias convert_dl convert_ul
|
257
276
|
|
258
277
|
def convert_li el, opts
|
259
278
|
prefix = (prev = opts[:prev]) && prev.options[:compound] ? LF : ''
|
260
279
|
marker = opts[:parent].type == :ol ? '.' : '*'
|
261
|
-
indent = (level = opts[:
|
280
|
+
indent = (level = opts[:list_level]) - 1
|
262
281
|
%(#{prefix}#{indent > 0 ? ' ' * indent : ''}#{marker * level} #{(inner el, (opts.merge rstrip: true))}#{LF})
|
263
282
|
end
|
264
283
|
|
284
|
+
def convert_dt el, opts
|
285
|
+
prefix = opts[:prev] ? LF : ''
|
286
|
+
marker = DLIST_MARKERS[opts[:list_level] - 1]
|
287
|
+
%(#{prefix}#{inner el, opts}#{marker}#{LF})
|
288
|
+
end
|
289
|
+
|
290
|
+
def convert_dd el, opts
|
291
|
+
%(#{inner el, (opts.merge rstrip: true)}#{LF})
|
292
|
+
end
|
293
|
+
|
265
294
|
def convert_table el, opts
|
266
295
|
head = nil
|
267
296
|
cols = (alignments = el.options[:alignment]).size
|
@@ -324,14 +353,23 @@ module Kramdown; module AsciiDoc
|
|
324
353
|
end
|
325
354
|
|
326
355
|
def convert_strong el, opts
|
327
|
-
|
356
|
+
content = inner el, opts
|
357
|
+
if (content.include? ' > ') && MenuRefRx =~ content
|
358
|
+
@attributes['experimental'] = ''
|
359
|
+
%(menu:#{$1}[#{$2}])
|
360
|
+
else
|
361
|
+
%(*#{content}*)
|
362
|
+
end
|
328
363
|
end
|
329
364
|
|
330
365
|
# NOTE this logic assumes the :hard_wrap option is disabled in the parser
|
331
366
|
def convert_br el, opts
|
332
|
-
|
333
|
-
|
334
|
-
|
367
|
+
if (current_line = opts[:result][-1])
|
368
|
+
prefix = (current_line.end_with? ' ') ? '' : ' '
|
369
|
+
else
|
370
|
+
prefix = '{blank} '
|
371
|
+
end
|
372
|
+
if el.options[:html_tag]
|
335
373
|
siblings = opts[:parent].children
|
336
374
|
suffix = (next_el = siblings[(siblings.index el) + 1] || VoidElement).type == :text && (next_el.value.start_with? LF) ? '' : LF
|
337
375
|
else
|
@@ -379,22 +417,20 @@ module Kramdown; module AsciiDoc
|
|
379
417
|
else
|
380
418
|
macro_prefix = 'image:'
|
381
419
|
end
|
382
|
-
macro_attrs = []
|
420
|
+
macro_attrs = [nil]
|
383
421
|
if (alt_text = el.attr['alt'])
|
384
|
-
macro_attrs
|
422
|
+
macro_attrs[0] = alt_text unless alt_text.empty?
|
385
423
|
end
|
386
424
|
if (width = el.attr['width'])
|
387
|
-
macro_attrs << '' if macro_attrs.empty?
|
388
425
|
macro_attrs << width
|
389
426
|
elsif (css = el.attr['style']) && (width_css = (css.split CssPropDelimRx).find {|p| p.start_with? 'width:' })
|
390
|
-
macro_attrs << '' if macro_attrs.empty?
|
391
427
|
width = (width_css.slice (width_css.index ':') + 1, width_css.length).strip
|
392
|
-
unless width.end_with? '%'
|
393
|
-
width = width.to_f
|
394
|
-
width = width.to_i if width == width.to_i
|
395
|
-
end
|
428
|
+
width = width.to_f.round unless width.end_with? '%'
|
396
429
|
macro_attrs << width
|
397
430
|
end
|
431
|
+
if macro_attrs.size == 1 && (alt_text = macro_attrs.pop)
|
432
|
+
macro_attrs << alt_text
|
433
|
+
end
|
398
434
|
if (url = opts[:url])
|
399
435
|
macro_attrs << %(link=#{url})
|
400
436
|
end
|
@@ -425,6 +461,8 @@ module Kramdown; module AsciiDoc
|
|
425
461
|
contents = inner el, (opts.merge rstrip: el.options[:category] == :block)
|
426
462
|
attrs = (attrs = el.attr).empty? ? '' : attrs.map {|k, v| %( #{k}="#{v}") }.join
|
427
463
|
case tagname
|
464
|
+
when 'del'
|
465
|
+
%([.line-through]##{contents}#)
|
428
466
|
when 'sup'
|
429
467
|
%(^#{contents}^)
|
430
468
|
when 'sub'
|
@@ -440,7 +478,7 @@ module Kramdown; module AsciiDoc
|
|
440
478
|
#siblings = (parent = opts[:parent]) ? parent.children : []
|
441
479
|
if (el.options[:category] == :block)# || (!opts[:result][-1] && siblings[-1] == el)
|
442
480
|
if comment_text.empty?
|
443
|
-
%(
|
481
|
+
%(//#{LFx2})
|
444
482
|
elsif comment_text.include? LF
|
445
483
|
%(////#{LF}#{comment_text}#{LF}////#{LFx2})
|
446
484
|
else
|
@@ -476,7 +514,7 @@ module Kramdown; module AsciiDoc
|
|
476
514
|
el
|
477
515
|
end
|
478
516
|
|
479
|
-
def inner el, opts
|
517
|
+
def inner el, opts
|
480
518
|
rstrip = opts.delete :rstrip
|
481
519
|
result = []
|
482
520
|
prev = nil
|
@@ -487,7 +525,7 @@ module Kramdown; module AsciiDoc
|
|
487
525
|
rstrip ? result.join.rstrip : result.join
|
488
526
|
end
|
489
527
|
|
490
|
-
def clone el, properties
|
528
|
+
def clone el, properties
|
491
529
|
el = el.dup
|
492
530
|
properties.each do |name, value|
|
493
531
|
el.send %(#{name}=).to_sym, value
|
data/spec/converter_spec.rb
CHANGED
@@ -8,6 +8,7 @@ describe Kramdown::AsciiDoc::Converter do
|
|
8
8
|
|
9
9
|
context '#convert' do
|
10
10
|
let (:input) { %(# Document Title\n\nBody text.) }
|
11
|
+
|
11
12
|
it 'adds line feed (EOL) to end of output document' do
|
12
13
|
(expect converter.convert root).to end_with %(\n)
|
13
14
|
(expect doc.to_asciidoc).to end_with %(\n)
|
@@ -45,8 +46,7 @@ describe Kramdown::AsciiDoc::Converter do
|
|
45
46
|
...
|
46
47
|
EOS
|
47
48
|
|
48
|
-
attributes = {}
|
49
|
-
(expect Kramdown::AsciiDoc.replace_toc input, attributes).to be input
|
49
|
+
(expect Kramdown::AsciiDoc.replace_toc input, (attributes = {})).to be input
|
50
50
|
(expect attributes).to be_empty
|
51
51
|
end
|
52
52
|
|
@@ -81,8 +81,7 @@ describe Kramdown::AsciiDoc::Converter do
|
|
81
81
|
...
|
82
82
|
EOS
|
83
83
|
|
84
|
-
attributes = {}
|
85
|
-
(expect Kramdown::AsciiDoc.replace_toc input, attributes).to eql expected
|
84
|
+
(expect Kramdown::AsciiDoc.replace_toc input, (attributes = {})).to eql expected
|
86
85
|
(expect attributes['toc']).to eql 'macro'
|
87
86
|
end
|
88
87
|
end
|
@@ -99,20 +98,25 @@ describe Kramdown::AsciiDoc::Converter do
|
|
99
98
|
more content
|
100
99
|
EOS
|
101
100
|
|
102
|
-
attributes = {}
|
103
|
-
(expect
|
101
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to be input
|
102
|
+
(expect attributes).to be_empty
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'does not modify source if source is empty' do
|
106
|
+
input = ''
|
107
|
+
|
108
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to be input
|
104
109
|
(expect attributes).to be_empty
|
105
110
|
end
|
106
111
|
|
107
112
|
it 'extracts front matter and assigns entries to attributes' do
|
108
113
|
input = <<~EOS
|
109
114
|
---
|
110
|
-
title: Introduction
|
115
|
+
title: Introduction From Front Matter
|
111
116
|
description: An introduction to this amazing technology.
|
112
117
|
keywords: buzz, transformative
|
113
118
|
layout: default
|
114
119
|
---
|
115
|
-
|
116
120
|
# Introduction
|
117
121
|
|
118
122
|
When using this technology, anything is possible.
|
@@ -125,12 +129,137 @@ describe Kramdown::AsciiDoc::Converter do
|
|
125
129
|
EOS
|
126
130
|
|
127
131
|
expected_attributes = {
|
132
|
+
'title' => 'Introduction From Front Matter',
|
128
133
|
'description' => 'An introduction to this amazing technology.',
|
129
134
|
'keywords' => 'buzz, transformative',
|
130
135
|
}
|
131
136
|
|
132
|
-
attributes = {}
|
133
|
-
(expect
|
137
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to eql expected
|
138
|
+
(expect attributes).to eql expected_attributes
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'ignores title from front matter if explicit document title is present' do
|
142
|
+
input = <<~EOS
|
143
|
+
---
|
144
|
+
title: Document Title From Front Matter
|
145
|
+
description: An introduction to this amazing technology.
|
146
|
+
---
|
147
|
+
# Introduction
|
148
|
+
|
149
|
+
When using this technology, anything is possible.
|
150
|
+
EOS
|
151
|
+
|
152
|
+
expected = <<~EOS
|
153
|
+
= Introduction
|
154
|
+
:description: An introduction to this amazing technology.
|
155
|
+
|
156
|
+
When using this technology, anything is possible.
|
157
|
+
EOS
|
158
|
+
|
159
|
+
# FIXME can we reuse our lets to handle this test?
|
160
|
+
input = Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})
|
161
|
+
doc = Kramdown::Document.new input, (opts.merge attributes: attributes)
|
162
|
+
(expect doc.to_asciidoc).to eql expected
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'uses title from front matter as document title if explicit document title is absent' do
|
166
|
+
input = <<~EOS
|
167
|
+
---
|
168
|
+
title: Introduction
|
169
|
+
description: An introduction to this amazing technology.
|
170
|
+
---
|
171
|
+
|
172
|
+
When using this technology, anything is possible.
|
173
|
+
EOS
|
174
|
+
|
175
|
+
expected = <<~EOS
|
176
|
+
= Introduction
|
177
|
+
:description: An introduction to this amazing technology.
|
178
|
+
|
179
|
+
When using this technology, anything is possible.
|
180
|
+
EOS
|
181
|
+
|
182
|
+
# FIXME can we reuse our lets to handle this test?
|
183
|
+
input = Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})
|
184
|
+
doc = Kramdown::Document.new input, (opts.merge attributes: attributes)
|
185
|
+
(expect doc.to_asciidoc).to eql expected
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'assigns non-default layout in front matter to page-layout attribute' do
|
189
|
+
input = <<~EOS
|
190
|
+
---
|
191
|
+
layout: home
|
192
|
+
---
|
193
|
+
Welcome home!
|
194
|
+
EOS
|
195
|
+
|
196
|
+
expected = <<~EOS
|
197
|
+
Welcome home!
|
198
|
+
EOS
|
199
|
+
|
200
|
+
expected_attributes = {
|
201
|
+
'page-layout' => 'home'
|
202
|
+
}
|
203
|
+
|
204
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to eql expected
|
205
|
+
(expect attributes).to eql expected_attributes
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'returns empty document when it only contains front matter' do
|
209
|
+
input = <<~EOS
|
210
|
+
---
|
211
|
+
description: This page is intentionally left blank.
|
212
|
+
---
|
213
|
+
EOS
|
214
|
+
|
215
|
+
expected_attributes = {
|
216
|
+
'description' => 'This page is intentionally left blank.'
|
217
|
+
}
|
218
|
+
|
219
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to be_empty
|
220
|
+
(expect attributes).to eql expected_attributes
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'removes empty front matter' do
|
224
|
+
input = <<~EOS
|
225
|
+
---
|
226
|
+
---
|
227
|
+
Move along. There's no front matter to see here.
|
228
|
+
EOS
|
229
|
+
|
230
|
+
expected = <<~EOS
|
231
|
+
Move along. There's no front matter to see here.
|
232
|
+
EOS
|
233
|
+
|
234
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to eql expected
|
235
|
+
(expect attributes).to be_empty
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'does not remove leading hr' do
|
239
|
+
input = '---'
|
240
|
+
|
241
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to eql input
|
242
|
+
(expect attributes).to be_empty
|
243
|
+
end
|
244
|
+
|
245
|
+
it 'removes blank lines between front matter and body' do
|
246
|
+
input = <<~EOS
|
247
|
+
---
|
248
|
+
description: Just another page.
|
249
|
+
---
|
250
|
+
|
251
|
+
Another page.
|
252
|
+
EOS
|
253
|
+
|
254
|
+
expected = <<~EOS
|
255
|
+
Another page.
|
256
|
+
EOS
|
257
|
+
|
258
|
+
expected_attributes = {
|
259
|
+
'description' => 'Just another page.'
|
260
|
+
}
|
261
|
+
|
262
|
+
(expect Kramdown::AsciiDoc.extract_front_matter input, (attributes = {})).to eql expected
|
134
263
|
(expect attributes).to eql expected_attributes
|
135
264
|
end
|
136
265
|
end
|