# Text::AsciidocDown Text::AsciidocDown is a pure Perl, lightweight AsciiDoc-to-Markdown converter. It was inspired by [opendevise/downdoc](https://github.com/opendevise/downdoc) and aims to provide dependency-minimal AsciiDoc conversion using only core Perl modules. The module transforms practical AsciiDoc documents into Markdown with support for include pre-merge expansion, parser conversion, and reference rewrite passes through a single OO interface. ## Installation perl Makefile.PL make make test make install ## Dependencies Text::AsciidocDown requires Perl 5.16.0 or later. All dependencies are core Perl modules — no non-core CPAN packages are required. ## Usage ```perl use Text::AsciidocDown; my $converter = Text::AsciidocDown->new( attributes => { 'markdown-list-indent' => 4, }, ); my $asciidoc = <<'ASCIIDOC'; = Hello, AsciidocDown This is a *paragraph* with `inline` formatting. == Section Here is a list: * one * two * three ASCIIDOC my $markdown = $converter->convert($asciidoc); print $markdown; ``` Output: ``` # Hello, AsciidocDown This is a *paragraph* with `inline` formatting. ## Section Here is a list: * one * two * three ``` ### CLI The distribution includes a CLI script: perl script/asciidoc-down README.adoc perl script/asciidoc-down -o - README.adoc perl script/asciidoc-down -a env=perl -a env-perl README.adoc ## Typographic Quotes AsciiDoc's paired quote syntax has two forms: `"`text`"` (double-quoted) and `'`text`'` (single-quoted). Each is controlled by its own attribute: | Attribute | Governs | Default | | --- | --- | --- | | `quotes` | `"`text`"` | `“ ”` (U+201C / U+201D) | | `quotes-single` | `'`text`'` | `‘ ’` (U+2018 / U+2019) | Each attribute value is a space-separated open/close pair, e.g.: ```perl my $converter = Text::AsciidocDown->new( attributes => { quotes => ' ', 'quotes-single' => ' ', }, ); ``` The real-curly-character default (rather than the `` HTML used by the `downdoc` project this module is modeled after) is deliberate: it is what makes an AsciiDoc -> Markdown -> AsciiDoc -> Markdown round trip through `Text::MarkdownAdoc` stable, and it keeps the single- and double-quoted forms visually distinct. `downdoc` itself uses one shared `quotes` attribute (default ` `) for both forms, so if you need that exact shared behavior, set both attributes above to the same value. See `docs/COMPATIBILITY_REPORT.md` for the full rationale. Inline AsciiDoc passthrough (`+++text+++`) is emitted verbatim: no `<` escaping, no quote/format substitution, no attribute or macro expansion inside it. This matters in particular if you use the shared `` downdoc-parity setting above, since `Text::MarkdownAdoc` wraps that raw HTML as `++++++...++++++` passthrough on the way back to AsciiDoc; without verbatim passthrough handling, a second conversion pass would corrupt that content. ## Scope and Limitations - Practical AsciiDoc to Markdown conversion for common technical-doc patterns. - Not a full AsciiDoc implementation. - Some advanced syntactic edge cases are intentionally deferred. - Include pre-merge supports local filesystem includes with tag and lines selectors. ## Issues Report issues at https://github.com/spatocs/asciidoc-down/issues. ## License Same terms as Perl itself (GNU General Public License or Artistic License).