apex-ruby 1.0.6
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 +7 -0
- data/README.md +119 -0
- data/apex-ruby.gemspec +31 -0
- data/ext/apex_ext/apex_ext.c +215 -0
- data/ext/apex_ext/apex_src/BENCHMARK.md +32 -0
- data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +67 -0
- data/ext/apex_ext/apex_src/CHANGELOG.md +2454 -0
- data/ext/apex_ext/apex_src/CMakeLists.txt +454 -0
- data/ext/apex_ext/apex_src/Dockerfile.linux-build +15 -0
- data/ext/apex_ext/apex_src/Formula/apex.rb +38 -0
- data/ext/apex_ext/apex_src/Info.plist.in +27 -0
- data/ext/apex_ext/apex_src/LICENSE +21 -0
- data/ext/apex_ext/apex_src/Package.swift +160 -0
- data/ext/apex_ext/apex_src/PackageSupport/README.md +17 -0
- data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_export.h +20 -0
- data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_version.h +14 -0
- data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +4 -0
- data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/config.h +41 -0
- data/ext/apex_ext/apex_src/README.md +452 -0
- data/ext/apex_ext/apex_src/VERSION +1 -0
- data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
- data/ext/apex_ext/apex_src/apex-plugins.json.example +20 -0
- data/ext/apex_ext/apex_src/apex.pc.in +11 -0
- data/ext/apex_ext/apex_src/cli/main.c +2720 -0
- data/ext/apex_ext/apex_src/debug_test.sh +22 -0
- data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +451 -0
- data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +166 -0
- data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +220 -0
- data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +501 -0
- data/ext/apex_ext/apex_src/docs/DEBUGGING.md +73 -0
- data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +391 -0
- data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +237 -0
- data/ext/apex_ext/apex_src/docs/FUTURE_FEATURES.md +456 -0
- data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +210 -0
- data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +344 -0
- data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +144 -0
- data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +278 -0
- data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +321 -0
- data/ext/apex_ext/apex_src/docs/PROGRESS.md +167 -0
- data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +174 -0
- data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +243 -0
- data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +316 -0
- data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +803 -0
- data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +91 -0
- data/ext/apex_ext/apex_src/documentation/README.md +160 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +365 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +24 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +1737 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +1420 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3574 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +1603 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +910 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +1168 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +1003 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +1308 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +1078 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +1622 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +1168 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +1698 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +1531 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +1980 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +1368 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +1151 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +2861 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +3981 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +1454 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +1200 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +2066 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +22 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +914 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +399 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
- data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +772 -0
- data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +678 -0
- data/ext/apex_ext/apex_src/documentation/generate_docset.rb +873 -0
- data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +733 -0
- data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +17073 -0
- data/ext/apex_ext/apex_src/documentation/shared_scripts.js +64 -0
- data/ext/apex_ext/apex_src/documentation/shared_styles.css +646 -0
- data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +260 -0
- data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +119 -0
- data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +11 -0
- data/ext/apex_ext/apex_src/examples/example.html +53 -0
- data/ext/apex_ext/apex_src/examples/example.md +85 -0
- data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +158 -0
- data/ext/apex_ext/apex_src/examples/kbd.md +8 -0
- data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +250 -0
- data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +9 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
- data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
- data/ext/apex_ext/apex_src/include/apex/apex.h +247 -0
- data/ext/apex_ext/apex_src/include/apex/buffer.h +93 -0
- data/ext/apex_ext/apex_src/include/apex/module.modulemap +16 -0
- data/ext/apex_ext/apex_src/include/apex/parser.h +150 -0
- data/ext/apex_ext/apex_src/include/apex/renderer.h +39 -0
- data/ext/apex_ext/apex_src/man/apex-config.5 +374 -0
- data/ext/apex_ext/apex_src/man/apex-config.5.md +260 -0
- data/ext/apex_ext/apex_src/man/apex-plugins.7 +456 -0
- data/ext/apex_ext/apex_src/man/apex-plugins.7.md +365 -0
- data/ext/apex_ext/apex_src/man/apex.1 +828 -0
- data/ext/apex_ext/apex_src/man/apex.1.md +643 -0
- data/ext/apex_ext/apex_src/man/apex.1.new +338 -0
- data/ext/apex_ext/apex_src/objc/Apex.swift +237 -0
- data/ext/apex_ext/apex_src/objc/NSString+Apex.h +117 -0
- data/ext/apex_ext/apex_src/objc/NSString+Apex.m +332 -0
- data/ext/apex_ext/apex_src/src/_README.md +358 -0
- data/ext/apex_ext/apex_src/src/apex.c +6326 -0
- data/ext/apex_ext/apex_src/src/buffer.c +93 -0
- data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +362 -0
- data/ext/apex_ext/apex_src/src/extensions/abbreviations.h +45 -0
- data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.c +184 -0
- data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.h +50 -0
- data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +1897 -0
- data/ext/apex_ext/apex_src/src/extensions/advanced_tables.h +42 -0
- data/ext/apex_ext/apex_src/src/extensions/callouts.c +215 -0
- data/ext/apex_ext/apex_src/src/extensions/callouts.h +53 -0
- data/ext/apex_ext/apex_src/src/extensions/citations.c +2042 -0
- data/ext/apex_ext/apex_src/src/extensions/citations.h +163 -0
- data/ext/apex_ext/apex_src/src/extensions/critic.c +329 -0
- data/ext/apex_ext/apex_src/src/extensions/critic.h +48 -0
- data/ext/apex_ext/apex_src/src/extensions/definition_list.c +1670 -0
- data/ext/apex_ext/apex_src/src/extensions/definition_list.h +42 -0
- data/ext/apex_ext/apex_src/src/extensions/emoji.c +710 -0
- data/ext/apex_ext/apex_src/src/extensions/emoji.h +38 -0
- data/ext/apex_ext/apex_src/src/extensions/emoji_data.h +942 -0
- data/ext/apex_ext/apex_src/src/extensions/fenced_divs.c +925 -0
- data/ext/apex_ext/apex_src/src/extensions/fenced_divs.h +43 -0
- data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +869 -0
- data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1121 -0
- data/ext/apex_ext/apex_src/src/extensions/grid_tables.h +33 -0
- data/ext/apex_ext/apex_src/src/extensions/header_ids.c +626 -0
- data/ext/apex_ext/apex_src/src/extensions/header_ids.h +60 -0
- data/ext/apex_ext/apex_src/src/extensions/highlight.c +135 -0
- data/ext/apex_ext/apex_src/src/extensions/highlight.h +16 -0
- data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +408 -0
- data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +42 -0
- data/ext/apex_ext/apex_src/src/extensions/ial.c +4084 -0
- data/ext/apex_ext/apex_src/src/extensions/ial.h +145 -0
- data/ext/apex_ext/apex_src/src/extensions/includes.c +1536 -0
- data/ext/apex_ext/apex_src/src/extensions/includes.h +54 -0
- data/ext/apex_ext/apex_src/src/extensions/index.c +967 -0
- data/ext/apex_ext/apex_src/src/extensions/index.h +90 -0
- data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.c +205 -0
- data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.h +34 -0
- data/ext/apex_ext/apex_src/src/extensions/inline_tables.c +332 -0
- data/ext/apex_ext/apex_src/src/extensions/inline_tables.h +13 -0
- data/ext/apex_ext/apex_src/src/extensions/insert.c +248 -0
- data/ext/apex_ext/apex_src/src/extensions/insert.h +18 -0
- data/ext/apex_ext/apex_src/src/extensions/math.c +279 -0
- data/ext/apex_ext/apex_src/src/extensions/math.h +32 -0
- data/ext/apex_ext/apex_src/src/extensions/metadata.c +3046 -0
- data/ext/apex_ext/apex_src/src/extensions/metadata.h +125 -0
- data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +1297 -0
- data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.h +39 -0
- data/ext/apex_ext/apex_src/src/extensions/special_markers.c +194 -0
- data/ext/apex_ext/apex_src/src/extensions/special_markers.h +29 -0
- data/ext/apex_ext/apex_src/src/extensions/sup_sub.c +405 -0
- data/ext/apex_ext/apex_src/src/extensions/sup_sub.h +16 -0
- data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +468 -0
- data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.h +44 -0
- data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +2679 -0
- data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.h +23 -0
- data/ext/apex_ext/apex_src/src/extensions/toc.c +255 -0
- data/ext/apex_ext/apex_src/src/extensions/toc.h +34 -0
- data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +624 -0
- data/ext/apex_ext/apex_src/src/extensions/wiki_links.h +58 -0
- data/ext/apex_ext/apex_src/src/html_renderer.c +2762 -0
- data/ext/apex_ext/apex_src/src/html_renderer.h +126 -0
- data/ext/apex_ext/apex_src/src/parser.c +227 -0
- data/ext/apex_ext/apex_src/src/plugins.c +895 -0
- data/ext/apex_ext/apex_src/src/plugins.h +39 -0
- data/ext/apex_ext/apex_src/src/plugins_env.c +187 -0
- data/ext/apex_ext/apex_src/src/plugins_remote.c +263 -0
- data/ext/apex_ext/apex_src/src/pretty_html.c +358 -0
- data/ext/apex_ext/apex_src/src/renderer.c +241 -0
- data/ext/apex_ext/apex_src/src/utf8.c +56 -0
- data/ext/apex_ext/apex_src/test-linux-build.sh +20 -0
- data/ext/apex_ext/apex_src/test.html +103 -0
- data/ext/apex_ext/apex_src/test_coverage.sh +121 -0
- data/ext/apex_ext/apex_src/test_ial_fenced.md +6 -0
- data/ext/apex_ext/apex_src/test_math_norm.py +79 -0
- data/ext/apex_ext/apex_src/test_pandoc_output.html +48 -0
- data/ext/apex_ext/apex_src/test_spm.sh +107 -0
- data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +50 -0
- data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +229 -0
- data/ext/apex_ext/apex_src/tests/CMakeLists.txt +24 -0
- data/ext/apex_ext/apex_src/tests/README.md +146 -0
- data/ext/apex_ext/apex_src/tests/benchmark.sh +113 -0
- data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +166 -0
- data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +31 -0
- data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +25 -0
- data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +24 -0
- data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +33 -0
- data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +26 -0
- data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +260 -0
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +6 -0
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +7 -0
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +9 -0
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +620 -0
- data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +11 -0
- data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +177 -0
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +94 -0
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +74 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +27 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +60 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +27 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +94 -0
- data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +16 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +4 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +2 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +11 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +8 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +4 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +7 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +1094 -0
- data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +11 -0
- data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +96 -0
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +43 -0
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +12 -0
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +53 -0
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +37 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +93 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +38 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +12 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +15 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +15 -0
- data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +105 -0
- data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +143 -0
- data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +96 -0
- data/ext/apex_ext/apex_src/tests/gh_api_test.md +6 -0
- data/ext/apex_ext/apex_src/tests/ial_demo.html +186 -0
- data/ext/apex_ext/apex_src/tests/include_code.py +19 -0
- data/ext/apex_ext/apex_src/tests/include_snippet.md +15 -0
- data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +64 -0
- data/ext/apex_ext/apex_src/tests/sample_data.csv +7 -0
- data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +4 -0
- data/ext/apex_ext/apex_src/tests/test_basic.c +74 -0
- data/ext/apex_ext/apex_src/tests/test_extensions.c +2116 -0
- data/ext/apex_ext/apex_src/tests/test_helpers.c +183 -0
- data/ext/apex_ext/apex_src/tests/test_helpers.h +91 -0
- data/ext/apex_ext/apex_src/tests/test_ial.c +282 -0
- data/ext/apex_ext/apex_src/tests/test_links.c +418 -0
- data/ext/apex_ext/apex_src/tests/test_marked_integration.c +265 -0
- data/ext/apex_ext/apex_src/tests/test_metadata.c +908 -0
- data/ext/apex_ext/apex_src/tests/test_output.c +1118 -0
- data/ext/apex_ext/apex_src/tests/test_plugins.c +219 -0
- data/ext/apex_ext/apex_src/tests/test_refs.bib +31 -0
- data/ext/apex_ext/apex_src/tests/test_runner.c +244 -0
- data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +198 -0
- data/ext/apex_ext/apex_src/tests/test_tables.c +862 -0
- data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +9 -0
- data/ext/apex_ext/apex_src/tests/yaml_test.md +13 -0
- data/ext/apex_ext/apex_src/tests.rb +39 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +48 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/COPYING +170 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +14 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +43 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +74 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +38 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +206 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +30 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +15 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +16 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +111 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +35 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +1169 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +21 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +16 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +13 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +11 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +14 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +9 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +10 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +32 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +8 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +67 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +36 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +15 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +17 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +14 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +3 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +5 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +5 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +5 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +11 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +15 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +44 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +23 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +13 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +24 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +13 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +18 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +595 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +19 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +33 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +1245 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +1495 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +119 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +508 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.h +8 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/cmark-gfm-core-extensions.h +54 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/core-extensions.c +27 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.c +879 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.h +24 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +92 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.c +167 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.h +9 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +917 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.h +12 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.c +60 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.h +8 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.c +156 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.h +8 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +22 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +12 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +91 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +110 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +28 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +10 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +133 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +78 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +1041 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +1 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +230 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/arena.c +104 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +1622 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.c +278 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.h +116 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/case_fold_switch.inc +4327 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/chunk.h +135 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm-extension_api.h +737 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm.h +833 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +7 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark.c +55 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.c +44 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.h +33 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/commonmark.c +514 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +76 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/entities.inc +2138 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.c +63 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.h +27 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini.h +57 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_href_e.c +100 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_e.c +66 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_u.c +149 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.c +502 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.h +27 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.c +1788 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.h +29 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.c +159 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.h +26 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/latex.c +468 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +10 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/linked_list.c +37 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +328 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/man.c +274 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.c +129 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.h +44 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.c +1045 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.h +167 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/parser.h +59 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plaintext.c +218 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.c +36 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.h +34 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.c +43 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.h +26 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.c +63 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.h +24 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.c +213 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.h +62 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.c +14056 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.h +70 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +365 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.c +149 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.h +34 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.c +317 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.h +35 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/xml.c +182 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +10 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +114 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +49 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +58 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +105 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +67 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +38 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +920 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +67 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +194 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +160 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +375 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +50 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +4 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +177 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +10212 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +152 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +17 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +41 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +13 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +32 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +22 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +319 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +80 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +104 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +6 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +37 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +15 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +208 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +109 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +160 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/Changes +372 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/License +20 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +51 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +46 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +89 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +3 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +4 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +73 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +222 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +17 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +26 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +26 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +29 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +24 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +10 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +2 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +14 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +1 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +2 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +1 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +7 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +7 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +3 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +17 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +1999 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +77 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +32 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +1 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +23 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +1 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +4 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +1393 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +394 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +2358 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +544 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +1416 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +469 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +3598 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +141 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +684 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +27 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +9 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +63 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +800 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +1127 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +217 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +202 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +29 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +314 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +290 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +327 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +63 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +196 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +88 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +63 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +354 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +29 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +10 -0
- data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +16 -0
- data/ext/apex_ext/extconf.rb +103 -0
- data/lib/apex/configurable.rb +46 -0
- data/lib/apex/document.rb +66 -0
- data/lib/apex/version.rb +15 -0
- data/lib/apex.rb +28 -0
- metadata +544 -0
|
@@ -0,0 +1,2454 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Apex will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.1.73] - 2026-02-04
|
|
6
|
+
|
|
7
|
+
### New
|
|
8
|
+
|
|
9
|
+
- Multi-image test coverage ensures that a reference-style image with attributes between two @2x images keeps its attributes without gaining an unwanted 2x srcset, and that the surrounding images still emit correct srcset values
|
|
10
|
+
- @3x image attribute adds support for 3x retina assets and automatically emits srcset entries for 1x, 2x, and 3x variants of the same path for both inline and reference-style images
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- @2x image attribute no longer mangles domains or query-string-only URLs; srcset 2x URLs are only generated when the path has a real file extension and the domain portion is never altered
|
|
15
|
+
- Reference-style image attributes (width, height, style, classes, id) are correctly applied in Unified, MultiMarkdown, and GFM modes, even when mixed with inline images and fenced div/figure blocks
|
|
16
|
+
- Reference-style image attributes no longer leak across images; inline images with @2x keep their own srcset and reference-style images only gain 2x srcset when explicitly marked
|
|
17
|
+
|
|
18
|
+
## [0.1.72] - 2026-02-02
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- --indices now enables mmark, TextIndex, and Leanpub syntax; Leanpub is on by default in unified mode.
|
|
23
|
+
- Index anchor IDs use idxref-N format (was idxref:N) to avoid emoji processing corrupting placeholders.
|
|
24
|
+
|
|
25
|
+
### New
|
|
26
|
+
|
|
27
|
+
- Add Leanpub index syntax: {i: term}, {i: "term"}, and {i: "Main!sub"} for hierarchical entries under headings.
|
|
28
|
+
- {index} marker: write {index} in the document to place the generated index at that position (replaced with <!--INDEX--> internally).
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- TextIndex [term]{^} no longer includes the closing bracket in the index entry (e.g. "fresh" instead of "fresh]").
|
|
33
|
+
- Leanpub {i: term} is no longer consumed by MMD metadata or parsed as IAL; content is preserved in output.
|
|
34
|
+
|
|
35
|
+
## [0.1.71] - 2026-01-30
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
|
|
40
|
+
|
|
41
|
+
### New
|
|
42
|
+
|
|
43
|
+
- Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
|
|
44
|
+
- Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
|
|
45
|
+
|
|
46
|
+
## [0.1.70] - 2026-01-30
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
|
|
51
|
+
|
|
52
|
+
### New
|
|
53
|
+
|
|
54
|
+
- Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
|
|
55
|
+
- Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
|
|
56
|
+
|
|
57
|
+
## [0.1.69] - 2026-01-30
|
|
58
|
+
|
|
59
|
+
### Improved
|
|
60
|
+
|
|
61
|
+
- URLs with a protocol (http, https, etc.) are no longer URL-encoded so query parameters in image URLs are preserved.
|
|
62
|
+
- Image reference definitions with key= attributes or bare @2x after the URL are now split and applied (width, height, srcset) in all modes, not only when image attributes are enabled.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Paragraph IAL on the same line (no blank line), e.g. "Text\n{: .lead }", now applies the class to the paragraph.
|
|
67
|
+
- Block IAL (e.g. {: .lead }) inside fenced divs and markdown="1" blocks now applies to the previous paragraph and the IAL line is removed from output.
|
|
68
|
+
- Block IAL is now recognized when an HTML block (e.g. </div>) sits between the content paragraph and the IAL paragraph.
|
|
69
|
+
- Reference-style images (e.g. ![alt][ref] with [ref]: url width=250 height=83) no longer produce blank output; attributes are applied and refs are expanded correctly.
|
|
70
|
+
- First line of document that looks like a Markdown link or image (e.g. [{: .class }]) is no longer consumed as MMD metadata, fixing blank output for such content.
|
|
71
|
+
- Image width, height, and other attributes from reference definitions are now applied to images inside fenced divs (::: ... :::) and other HTML elements with markdown="1"; they were previously dropped when inner content was parsed and rendered separately.
|
|
72
|
+
|
|
73
|
+
## [0.1.68] - 2026-01-30
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- Run image caption conversion whenever HTML is produced so caption="" is always honored; pass enable_image_captions and title_captions_only into the converter.
|
|
78
|
+
|
|
79
|
+
### New
|
|
80
|
+
|
|
81
|
+
- Allow caption="TEXT" attribute on images (IAL); always wraps in figure/figcaption even when --image-captions is disabled, and strips the caption attribute from the emitted img tag.
|
|
82
|
+
- Add --title-captions-only and --no-title-captions-only CLI flags.
|
|
83
|
+
- Add title-captions-only / title_captions_only metadata support.
|
|
84
|
+
|
|
85
|
+
### Improved
|
|
86
|
+
|
|
87
|
+
- When --title-captions-only is set, automatically enable image captions so both flags are not required.
|
|
88
|
+
|
|
89
|
+
## [0.1.67] - 2026-01-30
|
|
90
|
+
|
|
91
|
+
### New
|
|
92
|
+
|
|
93
|
+
- Image attribute @2x in inline, reference-style, or IAL (e.g.  or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
|
|
97
|
+
- SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
|
|
98
|
+
|
|
99
|
+
## [0.1.66] - 2026-01-30
|
|
100
|
+
|
|
101
|
+
### New
|
|
102
|
+
|
|
103
|
+
- Image attribute @2x in inline, reference-style, or IAL (e.g.  or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
|
|
104
|
+
|
|
105
|
+
### Fixed
|
|
106
|
+
|
|
107
|
+
- SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
|
|
108
|
+
|
|
109
|
+
## [0.1.65] - 2026-01-29
|
|
110
|
+
|
|
111
|
+
### Fixed
|
|
112
|
+
|
|
113
|
+
- SPM builds no longer fail with missing config.h or cmark-gfm_export.h when adding Apex via Swift Package Manager.
|
|
114
|
+
- SPM builds no longer fail at link time with undefined symbol _apex_apply_syntax_highlighting when adding Apex via Swift Package Manager.
|
|
115
|
+
|
|
116
|
+
## [0.1.64] - 2026-01-29
|
|
117
|
+
|
|
118
|
+
### Fixed
|
|
119
|
+
|
|
120
|
+
- Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
|
|
121
|
+
- Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
|
|
122
|
+
- Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
|
|
123
|
+
- Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with << in table HTML postprocess).
|
|
124
|
+
- Rowspan no longer puts cell content in the opening tag (e.g. <td Engineering rowspan="2">); rowspan is now applied correctly so the first cell shows <td rowspan="2">A</td>.
|
|
125
|
+
- When injecting rowspan/colspan into table HTML, only the tag name (<td or <th) is copied then attributes are injected; content between tag name and ">" is skipped so malformed or erroneously placed content is never written into the tag.
|
|
126
|
+
|
|
127
|
+
## [0.1.63] - 2026-01-29
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
|
|
131
|
+
- Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
|
|
132
|
+
- Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with << in table HTML postprocess).
|
|
133
|
+
|
|
134
|
+
## [0.1.62] - 2026-01-29
|
|
135
|
+
|
|
136
|
+
### Fixed
|
|
137
|
+
|
|
138
|
+
- Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
|
|
139
|
+
- Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
|
|
140
|
+
|
|
141
|
+
## [0.1.61] - 2026-01-28
|
|
142
|
+
|
|
143
|
+
### Fixed
|
|
144
|
+
|
|
145
|
+
- Preserve literal include syntax inside backticked code spans so examples like `<<[path/file]` render correctly in HTML without being processed.
|
|
146
|
+
|
|
147
|
+
## [0.1.60] - 2026-01-28
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- Convert images with alt or title text to <figure> and <figcaption> in supported modes while leaving plain images unchanged.
|
|
152
|
+
|
|
153
|
+
### New
|
|
154
|
+
|
|
155
|
+
- Add --[no-]image-captions CLI flag to control automatic figure and figcaption wrapping of images.
|
|
156
|
+
- Enable automatic image captions by default in MultiMarkdown and Unified modes, configurable per document via metadata.
|
|
157
|
+
|
|
158
|
+
### Improved
|
|
159
|
+
|
|
160
|
+
- Add regression tests covering image caption behavior across modes and configuration combinations.
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- Prevent image titles and other inline image attributes from bleeding onto different images when parsing and rendering image attributes.
|
|
165
|
+
|
|
166
|
+
## [0.1.59] - 2026-01-27
|
|
167
|
+
|
|
168
|
+
### Changed
|
|
169
|
+
|
|
170
|
+
- Show plugin metadata (id, title, author, description, homepage) in a stable order grouped under a single Installed Plugins section when using --list-plugins
|
|
171
|
+
|
|
172
|
+
### New
|
|
173
|
+
|
|
174
|
+
- --wikilink-sanitize to sanitize the wiki links
|
|
175
|
+
- Add comprehensive --wikilink-sanitize documentation to Command-Line-Options.md wiki page
|
|
176
|
+
- Support ++insert++ syntax that renders to <ins> and supports IAL attributes for ids and classes on inserted spans
|
|
177
|
+
- Discover project plugins from .apex directories in the current directory, base directory, and git repository root in addition to global config
|
|
178
|
+
- List installed plugins from project and global .apex/plugins roots in the CLI, following the same precedence rules as runtime plugin loading so users can see exactly which plugins are active for a given project
|
|
179
|
+
|
|
180
|
+
### Improved
|
|
181
|
+
|
|
182
|
+
- Highlight detection logic now properly validates both opening and closing == markers with stricter requirements
|
|
183
|
+
- Allow project plugins to shadow global plugins with the same id so projects can locally override or disable user-global plugins
|
|
184
|
+
- Add APEX_SUPPRESS_HIGHLIGHT_WARNINGS environment variable to suppress noisy missing-syntax-highlighter warnings when running in controlled environments
|
|
185
|
+
- Read configuration from project .apex/config.yml (with global config as a fallback) so per-project defaults override user-wide settings while keeping existing metadata and CLI precedence intact
|
|
186
|
+
|
|
187
|
+
### Fixed
|
|
188
|
+
|
|
189
|
+
- Highlight conversion now correctly rejects === (three equals) and only matches == (exactly two equals) for mark tags
|
|
190
|
+
- Highlight conversion no longer matches when preceded by = or + characters
|
|
191
|
+
- Highlight conversion no longer matches when followed by + character
|
|
192
|
+
- Highlight conversion no longer matches when closing == is preceded by space or followed by = or +
|
|
193
|
+
- Honor MultiMarkdown-style image attributes on reference-style images in unified and MultiMarkdown modes so definitions like [id]: path \"Title\" class=center width=300 height=200 style=\"...\" correctly apply class, width, height, and style
|
|
194
|
+
- Honor MultiMarkdown-style image attributes on inline and reference-style images in unified and MultiMarkdown modes so syntax like  or [id]: /img.jpg \"Title\" class=center width=300 height=200 style=\"...\" correctly applies class, width, height, and style to the rendered img tag
|
|
195
|
+
- Preserve MMD6-style image titles in parentheses like ) so they render a proper title attribute instead of leaving a stray closing parenthesis in the output
|
|
196
|
+
|
|
197
|
+
## [0.1.58] - 2026-01-15
|
|
198
|
+
|
|
199
|
+
### Fixed
|
|
200
|
+
|
|
201
|
+
- Missing test files
|
|
202
|
+
|
|
203
|
+
## [0.1.57] - 2026-01-15
|
|
204
|
+
|
|
205
|
+
### New
|
|
206
|
+
|
|
207
|
+
- Definition lists now support blank lines between the term and first definition, and between multiple definitions. Terms are preserved across blank lines and definition lists remain open across blank lines instead of closing prematurely.
|
|
208
|
+
|
|
209
|
+
### Improved
|
|
210
|
+
|
|
211
|
+
- Expanded test coverage
|
|
212
|
+
|
|
213
|
+
### Fixed
|
|
214
|
+
|
|
215
|
+
- Definition lists with blank lines between definitions no longer create separate <dl> blocks - all definitions for a term are now grouped in a single definition list.
|
|
216
|
+
- Terms with blank lines before their definitions are now correctly converted to <dt> tags instead of being rendered as paragraphs.
|
|
217
|
+
|
|
218
|
+
## [0.1.56] - 2026-01-14
|
|
219
|
+
|
|
220
|
+
### New
|
|
221
|
+
|
|
222
|
+
- Add test_marked_integration.c test file for Marked integration features
|
|
223
|
+
|
|
224
|
+
## [0.1.55] - 2026-01-14
|
|
225
|
+
|
|
226
|
+
### New
|
|
227
|
+
|
|
228
|
+
- Add test_marked_integration.c test file for Marked integration features
|
|
229
|
+
|
|
230
|
+
## [0.1.54] - 2026-01-14
|
|
231
|
+
|
|
232
|
+
### New
|
|
233
|
+
|
|
234
|
+
- --highlight-language-only flag to only highlight code blocks that have a language specified (via ```language or IAL), leaving plain code blocks unhighlighted
|
|
235
|
+
- Config file support for code-highlight option (accepts pygments, skylighting, or abbreviations p/pyg, s/sky)
|
|
236
|
+
- Config file support for code-line-numbers option (boolean)
|
|
237
|
+
- Config file support for highlight-language-only option (boolean)
|
|
238
|
+
- Display 256-color ANSI art logo alongside version info when running `apex --version` in a wide terminal (>=70 columns)
|
|
239
|
+
|
|
240
|
+
### Improved
|
|
241
|
+
|
|
242
|
+
- Version output detects terminal capabilities and falls back gracefully (narrow terminal, piped output, NO_COLOR set)
|
|
243
|
+
- Logo uses transparent background, blending with user's terminal colors instead of forcing black rectangle
|
|
244
|
+
|
|
245
|
+
### Fixed
|
|
246
|
+
|
|
247
|
+
- Blank line above ASCII art in --version output
|
|
248
|
+
|
|
249
|
+
## [0.1.53] - 2026-01-13
|
|
250
|
+
|
|
251
|
+
### New
|
|
252
|
+
|
|
253
|
+
- Display ASCII art logo alongside version info when running `apex --version` in a wide enough terminal (>=80 columns)
|
|
254
|
+
- --code-highlight TOOL flag for syntax highlighting via external tools (pygments, skylighting, or abbreviations p, s)
|
|
255
|
+
- --code-line-numbers flag to include line numbers in syntax-highlighted code blocks (requires --code-highlight)
|
|
256
|
+
- --css flag now accepts multiple stylesheets via repeated flags or comma-separated list (e.g., --css style.css --css syntax.css or --css style.css,syntax.css)
|
|
257
|
+
- Automatic GitHub-style syntax highlighting CSS embedded when --code-highlight is used (covers both Pygments and Skylighting class names)
|
|
258
|
+
- Add test runner `--badge` mode that outputs pass/fail count (e.g., "981/981") for badge generation
|
|
259
|
+
|
|
260
|
+
### Improved
|
|
261
|
+
|
|
262
|
+
- Version output automatically detects terminal capabilities and falls back to text-only when logo cannot display (narrow terminal, piped output, NO_COLOR set)
|
|
263
|
+
- --embed-css now embeds all specified stylesheets as inline <style> blocks
|
|
264
|
+
- Test output in errors-only mode (`-e`) now only prints suite titles for suites with failures
|
|
265
|
+
|
|
266
|
+
## [0.1.52] - 2026-01-11
|
|
267
|
+
|
|
268
|
+
### Changed
|
|
269
|
+
|
|
270
|
+
- Per-cell alignment is now enabled by default only in unified mode, disabled in all other modes (CommonMark, GFM, MultiMarkdown, Kramdown)
|
|
271
|
+
|
|
272
|
+
### New
|
|
273
|
+
|
|
274
|
+
- Table preprocessing converts consecutive pipes without whitespace (|||) to << markers for colspan detection, distinguishing between whitespace-separated empty cells (| | |) which remain separate and consecutive pipes (|||) which create colspans.
|
|
275
|
+
- Table cells can now specify alignment by adding colons at the start and/or end of cell content: leading colon (:) for left-align, trailing colon (:) for right-align, or both (:content:) for center-align. The colons are stripped from the output and replaced with style="text-align: ..." attributes.
|
|
276
|
+
- Added --per-cell-alignment and --no-per-cell-alignment CLI flags to enable or disable per-cell alignment markers in tables
|
|
277
|
+
- Added tests to verify colspan behavior with consecutive pipes vs empty cells with whitespace
|
|
278
|
+
|
|
279
|
+
### Improved
|
|
280
|
+
|
|
281
|
+
- Colspan attribute injection in HTML post-processing now includes fallback matching that checks nearby rows when position-based matching fails, ensuring colspan attributes are applied correctly even when row indices shift due to removed cells.
|
|
282
|
+
- HTML post-processing now removes cells containing << markers (entity-encoded <<) that were missed by AST-level removal.
|
|
283
|
+
- Cell text extraction for attribute matching now recursively checks nested text nodes (paragraphs, etc.) to properly match cells with complex content structures.
|
|
284
|
+
- Colspan merge logic now preserves cell alignment styles when cells are merged together, ensuring alignment attributes are maintained correctly when cells span multiple columns.
|
|
285
|
+
- Per-cell alignment processing is now conditional and only runs when the feature is enabled, improving performance when disabled
|
|
286
|
+
- Row-header detection in tables now correctly identifies empty first header cells
|
|
287
|
+
|
|
288
|
+
### Fixed
|
|
289
|
+
|
|
290
|
+
- Colspan detection now only triggers on cells with << markers (from consecutive pipes), not plain empty cells, so whitespace-separated pipes create separate empty cells as intended.
|
|
291
|
+
- Cells with << markers now always merge with previous cell to create colspan, even when followed by additional content in subsequent cells.
|
|
292
|
+
- Colspan now only merges consecutive empty cells (|||), not empty cells with whitespace between pipes (| |)
|
|
293
|
+
- Email autolinking no longer converts @ symbols in URLs to email addresses (e.g., Mastodon profile links like https://hachyderm.io/@ttscoff)
|
|
294
|
+
- Email autolinking now requires that the @ symbol is preceded by an alphanumeric character (not space or punctuation)
|
|
295
|
+
- Email autolinking now requires a TLD (top-level domain) to match, so only [user]@[domain].[tld] format is autolinked
|
|
296
|
+
- Email autolinking is now skipped inside markdown link URLs [text](url) to prevent incorrect conversions
|
|
297
|
+
- Row-header tables (tables with empty first header cell) now correctly convert first-column body cells to `<th scope="row">` even when `relaxed_tables` is disabled
|
|
298
|
+
|
|
299
|
+
## [0.1.51] - 2026-01-09
|
|
300
|
+
|
|
301
|
+
### New
|
|
302
|
+
|
|
303
|
+
- Support for : Caption syntax before tables, with or without IAL attributes
|
|
304
|
+
- Caption format now works before tables (previously only worked after tables)
|
|
305
|
+
- Added tests for : Caption before tables (basic, with IAL, without blank line)
|
|
306
|
+
- Add regression test to ensure table parsing works correctly when files don't end with a newline, preventing future regressions
|
|
307
|
+
- Add regression test to ensure table parsing works correctly when files use CR line endings, preventing future regressions with Table: Caption syntax
|
|
308
|
+
|
|
309
|
+
### Improved
|
|
310
|
+
|
|
311
|
+
- Definition list processor now skips : Caption lines that are followed by tables to avoid conflicts
|
|
312
|
+
- Table caption detection now handles blank lines between captions and tables
|
|
313
|
+
- Paragraph removal logic now recognizes and removes : Caption format paragraphs from output
|
|
314
|
+
- Refactored test suite to use centralized test_result() and test_resultf() helper functions instead of scattered printf statements with manual errors_only_output checks
|
|
315
|
+
|
|
316
|
+
### Fixed
|
|
317
|
+
|
|
318
|
+
- Buffer overflow in stdin reading that caused segfaults when piping from pbpaste
|
|
319
|
+
- Prevent memory leak in is_table_caption by only storing full_text in user_data when caption is confirmed, not before validation
|
|
320
|
+
- Fix potential crash when processing multiple tables by ensuring full_text is properly freed when caption validation fails
|
|
321
|
+
- Fix double-free in add_table_caption by checking for existing caption before freeing user_data, preventing use-after-free errors
|
|
322
|
+
- Fix : Caption lines before tables being incorrectly parsed as definition lists by always treating them as captions when followed by a table, regardless of IAL presence or blank lines
|
|
323
|
+
- Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before preprocessing and parsing
|
|
324
|
+
- Normalization breaking file includes
|
|
325
|
+
- Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before table preprocessing and final parsing
|
|
326
|
+
- Fix Table: Caption syntax not being processed when file uses CR line endings by updating table caption preprocessing to handle CR, LF, and CRLF line endings correctly
|
|
327
|
+
- --errors-only flag now correctly suppresses all passing test output, including negative tests that pass
|
|
328
|
+
|
|
329
|
+
## [0.1.50] - 2026-01-04
|
|
330
|
+
|
|
331
|
+
### Changed
|
|
332
|
+
|
|
333
|
+
- Removed rouge_css function from documentation generators (generate_docset.rb, generate_single_html.rb, generate_app_docs.rb) in favor of using the shared stylesheet approach.
|
|
334
|
+
|
|
335
|
+
### New
|
|
336
|
+
|
|
337
|
+
- Added generate_docset.rb script to generate Dash docsets from Apex documentation
|
|
338
|
+
- Added support for single-page CLI options docset using mmd2cheatset
|
|
339
|
+
- Added support for multi-page docset from wiki files with full navigation
|
|
340
|
+
- Added shared_styles.css with common styling for all documentation generators
|
|
341
|
+
- Added shared_scripts.js with hamburger menu functionality for mobile navigation
|
|
342
|
+
- Added hamburger menu button for mobile navigation that slides sidebar in from left
|
|
343
|
+
- Added mobile menu overlay that closes sidebar when clicked
|
|
344
|
+
|
|
345
|
+
### Improved
|
|
346
|
+
|
|
347
|
+
- Documentation generators now use shared CSS and JavaScript files for consistency
|
|
348
|
+
- Sidebar width increased to 180-250px on larger screens to prevent menu item wrapping
|
|
349
|
+
- Hamburger menu fades to 0.2 opacity when not hovered, full opacity on hover
|
|
350
|
+
- Hamburger menu repositions to right of sidebar when menu is open
|
|
351
|
+
- Hash handling on page load now supports both page IDs and section IDs
|
|
352
|
+
- Added hashchange event listener to handle URL hash changes after page load
|
|
353
|
+
- Moved Rouge syntax highlighting CSS to shared stylesheet (shared_styles.css) for better maintainability. All documentation generators now use the centralized GitHub theme CSS instead of generating it dynamically.
|
|
354
|
+
- Documentation generators now prioritize build/apex over build-release/apex when searching for the Apex binary, ensuring the most recently built version is used for documentation generation.
|
|
355
|
+
|
|
356
|
+
### Fixed
|
|
357
|
+
|
|
358
|
+
- TOC link navigation now uses getAbsoluteTop function for reliable scroll positioning
|
|
359
|
+
- Hash navigation in single-page HTML files now correctly shows page and scrolls to section
|
|
360
|
+
- TOC links in C API and other pages now scroll correctly instead of only moving 5px
|
|
361
|
+
- Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and skips processing when inside a code block, preserving the literal markdown syntax in code examples.
|
|
362
|
+
- Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and distinguishes between closing fences (```) and opening fences (```markdown). When inside a code block, only closing fences exit the block, while opening fences with language identifiers are treated as content, preventing definition list syntax from being rendered as HTML in code examples.
|
|
363
|
+
- Fixed double-free memory error in definition list preprocessor by setting ref_definitions to NULL after freeing and adding NULL checks in error paths to prevent attempting to free already-freed memory.
|
|
364
|
+
|
|
365
|
+
## [0.1.49] - 2026-01-03
|
|
366
|
+
|
|
367
|
+
### New
|
|
368
|
+
|
|
369
|
+
- Added standalone HTML document generation method with stylesheet and title support
|
|
370
|
+
- Added pretty-printing option method for formatted HTML output
|
|
371
|
+
- Added dictionary-based options method for flexible configuration
|
|
372
|
+
- Added Swift-friendly convenience method combining common options (generateHeaderIDs, hardBreaks, pretty)
|
|
373
|
+
- Added instance methods (apexHTML and apexHTMLWithMode) for fluent NSString usage
|
|
374
|
+
- Added Swift API wrapper (Apex.swift) with type-safe ApexMode enum and ApexOptions struct
|
|
375
|
+
- Added String extensions providing idiomatic Swift API for Markdown conversion
|
|
376
|
+
- Added static Apex converter struct for functional-style Swift usage
|
|
377
|
+
- Swift Package Manager (SPM) support - Apex can now be added as a package dependency in Xcode projects via SPM
|
|
378
|
+
- IOS support - Apex now supports iOS 11+ in addition to macOS 10.13+ through bundled libyaml dependency
|
|
379
|
+
- Module map for Swift C API imports - Added module.modulemap to enable direct C API access from Swift
|
|
380
|
+
- Add Package.swift for Swift Package Manager integration
|
|
381
|
+
- Add module.modulemap for Swift/Objective-C interop
|
|
382
|
+
- Add SPM test script and test project
|
|
383
|
+
|
|
384
|
+
### Improved
|
|
385
|
+
|
|
386
|
+
- Framework build now includes module map for proper Swift module support
|
|
387
|
+
- Add default initializer to ApexOptions struct for better Swift ergonomics
|
|
388
|
+
|
|
389
|
+
### Fixed
|
|
390
|
+
|
|
391
|
+
- Swift/Objective-C bridging issues in Apex.swift to work correctly with SPM module structure
|
|
392
|
+
- Fix node type declarations to use enum values instead of extern variables for better module compatibility
|
|
393
|
+
|
|
394
|
+
## [0.1.48] - 2026-01-03
|
|
395
|
+
|
|
396
|
+
### Fixed
|
|
397
|
+
|
|
398
|
+
- Linux build error: add missing stdint.h include to emoji.c for SIZE_MAX definition
|
|
399
|
+
|
|
400
|
+
## [0.1.47] - 2026-01-03
|
|
401
|
+
|
|
402
|
+
### Changed
|
|
403
|
+
|
|
404
|
+
- Updated Objective-C API to use mode constants instead of string literals in default implementation
|
|
405
|
+
|
|
406
|
+
### New
|
|
407
|
+
|
|
408
|
+
- Added emoji autocorrect option to enable automatic conversion of emoji names like :rocket: to Unicode emoji characters
|
|
409
|
+
- Added progress indicator option to show processing progress on stderr for operations longer than 1 second
|
|
410
|
+
|
|
411
|
+
### Improved
|
|
412
|
+
|
|
413
|
+
- Added mode constants (ApexModeCommonmark, ApexModeGFM, etc.) to Objective-C API for better type safety and code clarity
|
|
414
|
+
|
|
415
|
+
## [0.1.46] - 2026-01-03
|
|
416
|
+
|
|
417
|
+
## [0.1.45] - 2026-01-03
|
|
418
|
+
|
|
419
|
+
### Improved
|
|
420
|
+
|
|
421
|
+
- Table caption preprocessing now handles blank lines between tables and captions by buffering and discarding them appropriately
|
|
422
|
+
- Table matching in HTML renderer now uses sequential matching instead of index-based matching to correctly handle tables with attributes
|
|
423
|
+
- Caption detection now concatenates all text nodes in a paragraph to ensure IAL attributes are found even when split across nodes
|
|
424
|
+
|
|
425
|
+
### Fixed
|
|
426
|
+
|
|
427
|
+
- Table captions now work correctly when separated from tables by blank lines
|
|
428
|
+
- IAL attributes (id, class) are now correctly extracted and applied to tables with captions
|
|
429
|
+
- Table: caption format now works when appearing immediately after table rows without blank lines
|
|
430
|
+
- Table: caption format now supports case-insensitive "table:" in addition to "Table:"
|
|
431
|
+
|
|
432
|
+
## [0.1.44] - 2026-01-02
|
|
433
|
+
|
|
434
|
+
### Changed
|
|
435
|
+
|
|
436
|
+
- Updated emoji_entry structure to support both unicode and image-based emojis with separate unicode and image_url fields
|
|
437
|
+
- Table alignment test now accepts both align="center" and style="text-align: center" attributes to be more flexible with cmark-gfm's output format
|
|
438
|
+
|
|
439
|
+
### New
|
|
440
|
+
|
|
441
|
+
- Fenced divs now support specifying different HTML block elements using >blocktype syntax (e.g., ::: >aside {.sidebar} creates <aside> instead of <div>)
|
|
442
|
+
- Support for common HTML5 block elements: aside, article, section, details, summary, header, footer, nav, and custom elements
|
|
443
|
+
- Block type syntax works with all attribute types including IDs, classes, and custom attributes
|
|
444
|
+
- Added comprehensive test coverage for block type feature including nesting, multiple attributes, and edge cases
|
|
445
|
+
- In GFM format, emojis in headers are converted to their textual names in generated IDs (e.g., # Support -> id="smile-support"), matching Pandoc's GFM behavior
|
|
446
|
+
- Added support for all 861 GitHub emojis (expanded from ~200), including 14 image-based emojis like :bowtie:, :octocat:, and :feelsgood:
|
|
447
|
+
- Added emoji name autocorrect feature using fuzzy matching with Levenshtein distance algorithm to correct typos and formatting errors in emoji names
|
|
448
|
+
- Added --emoji-autocorrect and --no-emoji-autocorrect command-line flags to control emoji autocorrection
|
|
449
|
+
- Emoji autocorrect is enabled by default in unified mode and can be enabled in GFM mode
|
|
450
|
+
- Image-based emojis in headers now use em units (height: 1em) for proper scaling instead of fixed pixel sizes
|
|
451
|
+
|
|
452
|
+
### Improved
|
|
453
|
+
|
|
454
|
+
- Fenced div block types can be nested and mixed with regular divs
|
|
455
|
+
- Emoji processing now validates that only complete :emoji_name: patterns are processed (requires at least one character and no spaces between colons)
|
|
456
|
+
- Emoji names are normalized (lowercase, hyphens to underscores) before matching to handle case variations and formatting differences
|
|
457
|
+
- Table processing now completes in under 30ms for large tables (previously timing out after 5+ seconds) by avoiding expensive string comparisons when no changes are made
|
|
458
|
+
- Added early exit in table attribute injection to skip processing for simple tables without special attributes, avoiding expensive AST traversal for tables that don't need it
|
|
459
|
+
- Table post-processing performance significantly improved for large tables (2600+ cells) by implementing lazy cell content extraction, only extracting content when needed for attribute matching or alignment processing
|
|
460
|
+
- Added timeout protection (10 seconds) to table post-processing loop to prevent hangs on extremely large tables, gracefully exiting and returning processed HTML
|
|
461
|
+
- Per-cell alignment processing now disabled automatically for tables with more than 1000 cells to avoid timeouts, while column alignment from delimiter rows continues to work (handled by cmark-gfm)
|
|
462
|
+
- Optimized alignment colon detection to only check first and last non-whitespace characters instead of scanning entire cell content, reducing character comparisons by ~50x
|
|
463
|
+
- Added early exit for tables with only simple attributes (no rowspan/colspan/data-remove) to skip expensive HTML processing when no complex features are needed
|
|
464
|
+
- Content-based cell matching now skipped for tables with more than 500 attributes to avoid performance degradation
|
|
465
|
+
- Added CMARK_OPT_LIBERAL_HTML_TAG option when unsafe mode is enabled to allow cmark-gfm to properly recognize inline HTML tags instead of encoding them
|
|
466
|
+
- MacOS binaries now use @rpath for libyaml instead of hardcoded Homebrew paths, allowing the binary to work when copied to /usr/local/bin as long as libyaml is installed in /usr/local/lib or /opt/homebrew/lib
|
|
467
|
+
- Emoji name resolution now prefers longer, more descriptive names (e.g., "thumbsup" over "+1")
|
|
468
|
+
- Header ID generation now normalizes common Latin diacritics (e, a, c, etc.)
|
|
469
|
+
- Table rowspan matching now extracts cell content for more accurate matching
|
|
470
|
+
|
|
471
|
+
### Fixed
|
|
472
|
+
|
|
473
|
+
- Fixed issue where partial emoji patterns or empty patterns could cause incorrect matches
|
|
474
|
+
- Emoji replacement now correctly ignores table alignment patterns like :---: and :|: to prevent incorrect emoji processing in table delimiter rows
|
|
475
|
+
- Emoji patterns (like :bowtie:) inside HTML tag attributes are now correctly ignored and not processed, preventing mangled HTML output when emojis appear in attributes like title=":emoji:"
|
|
476
|
+
- Autolink processing now skips URLs inside HTML tag attributes, preventing URLs in attributes like src="https://..." from being converted to markdown links
|
|
477
|
+
- Inline HTML tags like <img> are no longer HTML-encoded when --unsafe is enabled, preserving raw HTML in paragraphs, blockquotes, and definition lists
|
|
478
|
+
- Header IDs with emojis now correctly replace cmark-gfm's auto-generated IDs instead of being skipped, ensuring custom ID formats (like emoji-to-name conversion) are applied
|
|
479
|
+
- Emoji processing now correctly skips index placeholders (<!--IDX:...-->)
|
|
480
|
+
- Table processing now correctly detects and processes rowspan markers (^^)
|
|
481
|
+
- Table attribute processing optimization no longer incorrectly skips rowspan/colspan attributes
|
|
482
|
+
- Table formatting in fixture
|
|
483
|
+
- Remove unused function
|
|
484
|
+
|
|
485
|
+
## [0.1.43] - 2025-12-31
|
|
486
|
+
|
|
487
|
+
### Changed
|
|
488
|
+
|
|
489
|
+
- Reference image attribute expansion now converts IAL
|
|
490
|
+
|
|
491
|
+
attributes (ID, classes) to key=value format for
|
|
492
|
+
compatibility with inline image parsing
|
|
493
|
+
|
|
494
|
+
- Test suite refactored: split test_runner.c into multiple
|
|
495
|
+
|
|
496
|
+
files (test_basic.c, test_extensions.c, test_helpers.c,
|
|
497
|
+
test_ial.c, test_links.c, test_metadata.c, test_output.c,
|
|
498
|
+
test_tables.c) for better organization
|
|
499
|
+
|
|
500
|
+
- Test fixtures reorganized: moved all .md test files from
|
|
501
|
+
|
|
502
|
+
tests/ to tests/fixtures/ with subdirectories (basic/,
|
|
503
|
+
demos/, extensions/, ial/, images/, output/, tables/)
|
|
504
|
+
|
|
505
|
+
### New
|
|
506
|
+
|
|
507
|
+
Support for Pandoc-style table captions using `: Caption` syntax (in addition to existing `[Caption]` and `Table: Caption` formats)
|
|
508
|
+
|
|
509
|
+
IAL attributes in table captions are now extracted and applied to the table element (e.g., `: Caption {#id .class}` applies `id` and `class` to the table)
|
|
510
|
+
|
|
511
|
+
Support for Pandoc-style IAL syntax without colon prefix (`{#id .class}` in addition to Kramdown `{:#id .class}` format)
|
|
512
|
+
|
|
513
|
+
- Support Pandoc-style IAL syntax ({#id .class}) in addition
|
|
514
|
+
|
|
515
|
+
to Kramdown-style ({: #id .class}) for all IAL contexts
|
|
516
|
+
including block-level, inline, and paragraph IALs
|
|
517
|
+
|
|
518
|
+
- Extract_ial_from_text function now recognizes both {: and
|
|
519
|
+
|
|
520
|
+
{# or {. formats when extracting IALs from text
|
|
521
|
+
|
|
522
|
+
- Extract_ial_from_paragraph function now accepts
|
|
523
|
+
|
|
524
|
+
Pandoc-style IALs for pure IAL paragraphs
|
|
525
|
+
|
|
526
|
+
- Process_span_ial_in_container function now processes
|
|
527
|
+
|
|
528
|
+
Pandoc-style IALs for inline elements like links, images,
|
|
529
|
+
and emphasis
|
|
530
|
+
|
|
531
|
+
- Is_ial_line function now detects Pandoc-style IAL-only
|
|
532
|
+
|
|
533
|
+
lines in addition to Kramdown format
|
|
534
|
+
|
|
535
|
+
- Support Pandoc-style IAL syntax ({#id .class}) in addition
|
|
536
|
+
|
|
537
|
+
to Kramdown-style ({: #id .class}) for all IAL contexts
|
|
538
|
+
including block-level elements, paragraphs, inline
|
|
539
|
+
elements, and headings
|
|
540
|
+
|
|
541
|
+
- Add support for Pandoc fenced divs syntax (::::: {#id
|
|
542
|
+
|
|
543
|
+
.class} ... :::::) in unified mode, enabled by default
|
|
544
|
+
|
|
545
|
+
- Add --divs and --no-divs command-line flags to control
|
|
546
|
+
|
|
547
|
+
fenced divs processing
|
|
548
|
+
|
|
549
|
+
- Add comprehensive test suite for Pandoc fenced divs
|
|
550
|
+
|
|
551
|
+
covering basic divs, nested divs, attributes, and edge
|
|
552
|
+
cases
|
|
553
|
+
|
|
554
|
+
- Add bracketed spans feature that converts [text]{IAL}
|
|
555
|
+
|
|
556
|
+
syntax to HTML span elements with attributes, enabled by
|
|
557
|
+
default in unified mode
|
|
558
|
+
|
|
559
|
+
- Add --spans and --no-spans command-line flags to
|
|
560
|
+
|
|
561
|
+
enable/disable bracketed spans in other modes
|
|
562
|
+
|
|
563
|
+
- Bracketed spans support all IAL attribute types (IDs,
|
|
564
|
+
|
|
565
|
+
classes, key-value pairs) and process markdown inside
|
|
566
|
+
spans
|
|
567
|
+
|
|
568
|
+
- Reference link definitions take precedence over bracketed
|
|
569
|
+
|
|
570
|
+
spans - if [text] matches a reference link, it remains a
|
|
571
|
+
link
|
|
572
|
+
|
|
573
|
+
- Add comprehensive test suite for bracketed spans including
|
|
574
|
+
|
|
575
|
+
reference link precedence, nested brackets, and markdown
|
|
576
|
+
processing
|
|
577
|
+
|
|
578
|
+
- Add bracketed spans examples and documentation
|
|
579
|
+
- Add automatic width/height attribute conversion:
|
|
580
|
+
|
|
581
|
+
percentages and non-integer/non-px values convert to style
|
|
582
|
+
attributes, Xpx values convert to integer width/height
|
|
583
|
+
attributes (strips px suffix), bare integers remain as
|
|
584
|
+
width/height attributes
|
|
585
|
+
|
|
586
|
+
- Add support for Pandoc/Kramdown IAL syntax on images:
|
|
587
|
+
|
|
588
|
+
inline images support IAL after closing paren like
|
|
589
|
+
{#id .class width=50%}
|
|
590
|
+
|
|
591
|
+
- Add support for IAL syntax after titles in reference image
|
|
592
|
+
|
|
593
|
+
definitions: [ref]: url "title" {#id .class width=50%}
|
|
594
|
+
|
|
595
|
+
- Add support for Pandoc-style IAL with space prefix: {
|
|
596
|
+
|
|
597
|
+
width=50% } syntax works for images
|
|
598
|
+
|
|
599
|
+
- Add comprehensive test suite for width/height conversion
|
|
600
|
+
|
|
601
|
+
covering percentages, pixels, integers, mixed cases, and
|
|
602
|
+
edge cases like decimals and viewport units
|
|
603
|
+
|
|
604
|
+
- Reference image definitions now preserve and include title
|
|
605
|
+
|
|
606
|
+
attributes from definitions like [ref]: url "title" {#id}
|
|
607
|
+
|
|
608
|
+
### Improved
|
|
609
|
+
|
|
610
|
+
- Table caption preprocessing now converts `: Caption`
|
|
611
|
+
|
|
612
|
+
format to `[Caption]` format before definition list
|
|
613
|
+
processing to avoid conflicts
|
|
614
|
+
|
|
615
|
+
- HTML renderer now extracts and injects IAL attributes from
|
|
616
|
+
|
|
617
|
+
table captions while excluding internal attributes like
|
|
618
|
+
`data-caption`
|
|
619
|
+
|
|
620
|
+
- IAL parsing automatically detects format and adjusts
|
|
621
|
+
|
|
622
|
+
content offset accordingly (2 chars for {: format, 1 char
|
|
623
|
+
for {# or {. format)
|
|
624
|
+
|
|
625
|
+
- HTML markdown extension now uses CMARK_OPT_UNSAFE to allow
|
|
626
|
+
|
|
627
|
+
raw HTML including nested divs in processed content
|
|
628
|
+
|
|
629
|
+
- Width/height conversion properly merges with existing
|
|
630
|
+
|
|
631
|
+
style attributes when both are present
|
|
632
|
+
|
|
633
|
+
- IAL detection now properly handles whitespace before IAL
|
|
634
|
+
|
|
635
|
+
syntax for both inline and reference images
|
|
636
|
+
|
|
637
|
+
- Reference image expansion now correctly skips IAL even
|
|
638
|
+
|
|
639
|
+
when closing paren is not found
|
|
640
|
+
|
|
641
|
+
### Fixed
|
|
642
|
+
|
|
643
|
+
- Table caption test assertions now correctly match table
|
|
644
|
+
|
|
645
|
+
tags with attributes by using <table instead of <table>
|
|
646
|
+
|
|
647
|
+
- Extract_ial_from_paragraph now allows newline character
|
|
648
|
+
|
|
649
|
+
after closing brace in IAL syntax
|
|
650
|
+
|
|
651
|
+
- List items with key:value format (e.g., "- Foo: Bar") are
|
|
652
|
+
|
|
653
|
+
no longer incorrectly parsed as MMD metadata in unified
|
|
654
|
+
mode
|
|
655
|
+
|
|
656
|
+
- Fenced divs now add markdown="1" attribute so content
|
|
657
|
+
|
|
658
|
+
inside divs is properly parsed as markdown
|
|
659
|
+
|
|
660
|
+
- HTML markdown extension now preserves all attributes (id,
|
|
661
|
+
|
|
662
|
+
class, custom attributes) when processing divs with
|
|
663
|
+
markdown="1"
|
|
664
|
+
|
|
665
|
+
- HTML markdown extension now recursively processes nested
|
|
666
|
+
|
|
667
|
+
divs with markdown="1" attributes
|
|
668
|
+
|
|
669
|
+
- HTML markdown extension now adds newline after closing div
|
|
670
|
+
|
|
671
|
+
tags to ensure following markdown headers and content are
|
|
672
|
+
parsed correctly
|
|
673
|
+
|
|
674
|
+
- Bracketed spans now correctly handle nested brackets by
|
|
675
|
+
|
|
676
|
+
matching outer brackets instead of first closing bracket
|
|
677
|
+
|
|
678
|
+
- Remove test assertions checking for markdown attribute on
|
|
679
|
+
|
|
680
|
+
bracketed spans which is correctly removed by
|
|
681
|
+
html_markdown extension
|
|
682
|
+
|
|
683
|
+
- IAL syntax with spaces (e.g., { width=50% }) now correctly
|
|
684
|
+
|
|
685
|
+
detected and processed for images
|
|
686
|
+
|
|
687
|
+
- IAL syntax is now properly stripped from output even when
|
|
688
|
+
|
|
689
|
+
parsing fails, preventing raw IAL from appearing in HTML
|
|
690
|
+
|
|
691
|
+
- Reference image definitions with IAL after URL (no title)
|
|
692
|
+
|
|
693
|
+
now correctly detected and processed
|
|
694
|
+
|
|
695
|
+
- Test string length issues: replaced hardcoded lengths with
|
|
696
|
+
|
|
697
|
+
strlen() calls to ensure full IAL syntax is processed in
|
|
698
|
+
width/height conversion tests
|
|
699
|
+
|
|
700
|
+
- Removed unused style_attr_index variable to eliminate
|
|
701
|
+
|
|
702
|
+
compiler warning
|
|
703
|
+
|
|
704
|
+
## [0.1.42] - 2025-12-30
|
|
705
|
+
|
|
706
|
+
### New
|
|
707
|
+
|
|
708
|
+
- ALD references can now be combined with additional
|
|
709
|
+
|
|
710
|
+
attributes in the same IAL (e.g., {:id .class3} where id
|
|
711
|
+
is an ALD reference and .class3 is an additional class)
|
|
712
|
+
|
|
713
|
+
### Improved
|
|
714
|
+
|
|
715
|
+
- When merging ALD attributes with additional attributes,
|
|
716
|
+
|
|
717
|
+
duplicate key-value pairs are now replaced instead of
|
|
718
|
+
duplicated (e.g., if ALD defines rel="x" and IAL includes
|
|
719
|
+
rel="y", the result is rel="y")
|
|
720
|
+
|
|
721
|
+
- Classes from additional attributes are appended to ALD
|
|
722
|
+
|
|
723
|
+
classes, and IDs in IALs override ALD IDs when specified
|
|
724
|
+
|
|
725
|
+
- Enhanced merge_attributes function to properly handle
|
|
726
|
+
|
|
727
|
+
attribute key conflicts by replacing existing values
|
|
728
|
+
rather than creating duplicates
|
|
729
|
+
|
|
730
|
+
## [0.1.41] - 2025-12-30
|
|
731
|
+
|
|
732
|
+
### New
|
|
733
|
+
|
|
734
|
+
- Inline Attribute Lists (IALs) can now appear immediately
|
|
735
|
+
|
|
736
|
+
after inline elements within paragraphs, not just at the
|
|
737
|
+
end of paragraphs
|
|
738
|
+
|
|
739
|
+
- IALs can be applied to strong (bold), emphasis (italic),
|
|
740
|
+
|
|
741
|
+
and code elements in addition to links and images
|
|
742
|
+
|
|
743
|
+
- IALs now work with nested inline elements, allowing
|
|
744
|
+
|
|
745
|
+
attributes to be applied to italic text inside bold text
|
|
746
|
+
and similar nested structures
|
|
747
|
+
|
|
748
|
+
- Added comprehensive test suite for inline IAL
|
|
749
|
+
|
|
750
|
+
functionality covering links, strong, emphasis, code,
|
|
751
|
+
multiple IALs, and edge cases
|
|
752
|
+
|
|
753
|
+
- Added IAL demo markdown file (tests/ial_demo.md)
|
|
754
|
+
|
|
755
|
+
demonstrating all supported IAL features
|
|
756
|
+
|
|
757
|
+
- Added script (tests/generate_ial_demo.sh) to automatically
|
|
758
|
+
|
|
759
|
+
generate an HTML file with interactive attribute
|
|
760
|
+
inspection tooltips
|
|
761
|
+
|
|
762
|
+
### Fixed
|
|
763
|
+
|
|
764
|
+
- IALs (Inline Attribute Lists) are now correctly applied to
|
|
765
|
+
|
|
766
|
+
the intended link element when multiple links in a
|
|
767
|
+
document share the same URL
|
|
768
|
+
|
|
769
|
+
- IALs are now correctly applied to the intended element
|
|
770
|
+
|
|
771
|
+
when multiple elements share the same URL or content,
|
|
772
|
+
using separate element counters for each inline element
|
|
773
|
+
type
|
|
774
|
+
|
|
775
|
+
- Block-level HTML elements now correctly include a space
|
|
776
|
+
|
|
777
|
+
between the tag name and attributes when IAL attributes
|
|
778
|
+
are injected
|
|
779
|
+
|
|
780
|
+
## [0.1.40] - 2025-12-23
|
|
781
|
+
|
|
782
|
+
### Changed
|
|
783
|
+
|
|
784
|
+
- Table captions now default to below the table instead of
|
|
785
|
+
|
|
786
|
+
above
|
|
787
|
+
|
|
788
|
+
- Tfoot row detection in AST now separates the logic for
|
|
789
|
+
|
|
790
|
+
marking the === row itself versus rows that come after it,
|
|
791
|
+
improving accuracy of tfoot section identification.
|
|
792
|
+
|
|
793
|
+
- Disallow using --combine and --mmd-merge together to avoid
|
|
794
|
+
|
|
795
|
+
ambiguous multi-file behavior
|
|
796
|
+
|
|
797
|
+
- Update CSV include and inline table handling so both share
|
|
798
|
+
|
|
799
|
+
the same CSV-to-table conversion and alignment behavior
|
|
800
|
+
|
|
801
|
+
### New
|
|
802
|
+
|
|
803
|
+
- Added --captions option to control caption position (above
|
|
804
|
+
|
|
805
|
+
or below)
|
|
806
|
+
|
|
807
|
+
- Added default CSS styling for figcaption elements in
|
|
808
|
+
|
|
809
|
+
standalone output (centered, bold, 0.8em)
|
|
810
|
+
|
|
811
|
+
- Added CSS styling for table figures to align captions with
|
|
812
|
+
|
|
813
|
+
tables (fit-content width)
|
|
814
|
+
|
|
815
|
+
- Support for tables that start with alignment rows
|
|
816
|
+
|
|
817
|
+
(separator rows) without header rows. Column alignment
|
|
818
|
+
specified in the separator row is automatically applied to
|
|
819
|
+
all data columns.
|
|
820
|
+
|
|
821
|
+
- Support for individual cell alignment in tables using
|
|
822
|
+
|
|
823
|
+
colons, similar to Jekyll Spaceship. Cells can be aligned
|
|
824
|
+
independently with :Text (left), Text: (right), or :Text:
|
|
825
|
+
(center). Colons are removed from output and alignment is
|
|
826
|
+
applied via CSS text-align styles.
|
|
827
|
+
|
|
828
|
+
- Support per-cell alignment markers inside table cells
|
|
829
|
+
- Support multiline table cells using trailing backslash
|
|
830
|
+
|
|
831
|
+
markers
|
|
832
|
+
|
|
833
|
+
- Support header and footer colspans based on empty cells
|
|
834
|
+
- Add --combine CLI mode to concatenate Markdown files with
|
|
835
|
+
|
|
836
|
+
include expansion and GitBook-style SUMMARY.md index
|
|
837
|
+
support.
|
|
838
|
+
|
|
839
|
+
- Add --mmd-merge CLI mode to merge MultiMarkdown index
|
|
840
|
+
|
|
841
|
+
files into a single Markdown stream
|
|
842
|
+
|
|
843
|
+
- Support indentation-based header level shifting when
|
|
844
|
+
|
|
845
|
+
merging mmd_merge index entries
|
|
846
|
+
|
|
847
|
+
- Support inline CSV/TSV tables using ```table fenced blocks
|
|
848
|
+
|
|
849
|
+
with automatic CSV/TSV delimiter detection
|
|
850
|
+
|
|
851
|
+
- Support <!--TABLE--> markers that convert following
|
|
852
|
+
|
|
853
|
+
CSV/TSV lines into Markdown tables until a blank line
|
|
854
|
+
|
|
855
|
+
- Add --aria command-line option to enable ARIA labels and
|
|
856
|
+
|
|
857
|
+
accessibility attributes in HTML output
|
|
858
|
+
|
|
859
|
+
- Add aria-label="Table of contents" to TOC navigation
|
|
860
|
+
|
|
861
|
+
elements when --aria is enabled
|
|
862
|
+
|
|
863
|
+
Add role="figure" to figure elements when --aria is enabled
|
|
864
|
+
|
|
865
|
+
- Add role="table" to table elements when --aria is enabled
|
|
866
|
+
- Generate id attributes for figcaption elements in table
|
|
867
|
+
|
|
868
|
+
figures when --aria is enabled
|
|
869
|
+
|
|
870
|
+
- Add aria-describedby attributes linking tables to their
|
|
871
|
+
|
|
872
|
+
captions when --aria is enabled
|
|
873
|
+
|
|
874
|
+
### Improved
|
|
875
|
+
|
|
876
|
+
- Removed unused variables to eliminate compiler warnings
|
|
877
|
+
- Empty thead sections from headerless tables are now
|
|
878
|
+
|
|
879
|
+
removed from HTML output instead of rendering empty header
|
|
880
|
+
cells.
|
|
881
|
+
|
|
882
|
+
- Table row mapping now better handles the relationship
|
|
883
|
+
|
|
884
|
+
between HTML row indices and AST row indices, accounting
|
|
885
|
+
for separator rows that are removed from HTML output.
|
|
886
|
+
|
|
887
|
+
- Added safeguards to prevent rows that should be in tbody
|
|
888
|
+
|
|
889
|
+
from being skipped, including protection for the first few
|
|
890
|
+
rows (header and first two data rows) when a === separator
|
|
891
|
+
is present.
|
|
892
|
+
|
|
893
|
+
- Make table captions positionable above or below tables
|
|
894
|
+
- Center and style figcaptions in standalone HTML output
|
|
895
|
+
- Support optional alignment keyword rows (left, right,
|
|
896
|
+
|
|
897
|
+
center, auto) and headless tables for both included CSV
|
|
898
|
+
files and inline CSV/TSV data
|
|
899
|
+
|
|
900
|
+
- Preserve ```table fences without commas or tabs by leaving
|
|
901
|
+
|
|
902
|
+
them as code blocks so users can show literal CSV/TSV
|
|
903
|
+
without conversion
|
|
904
|
+
|
|
905
|
+
### Fixed
|
|
906
|
+
|
|
907
|
+
- Removed unused variable 'row_idx' from advanced_tables.c
|
|
908
|
+
|
|
909
|
+
to eliminate compiler warnings.
|
|
910
|
+
|
|
911
|
+
- Rows before the === separator are now correctly placed in
|
|
912
|
+
|
|
913
|
+
tbody instead of being incorrectly placed in tfoot or
|
|
914
|
+
skipped entirely. The fix includes HTML position
|
|
915
|
+
verification to ensure rows that appear before the === row
|
|
916
|
+
in the rendered HTML are always in tbody, regardless of
|
|
917
|
+
AST marking.
|
|
918
|
+
|
|
919
|
+
- Prevent === separator rows from appearing as table content
|
|
920
|
+
|
|
921
|
+
Ensure footer rows render in tfoot without losing body rows
|
|
922
|
+
|
|
923
|
+
- Preserve legitimate empty cells such as missing Q4 values
|
|
924
|
+
- Apply ^^ rowspans correctly for all table sections
|
|
925
|
+
- Apply ^^ rowspans correctly across table sections without
|
|
926
|
+
|
|
927
|
+
leaking into unrelated rows
|
|
928
|
+
|
|
929
|
+
- Support footer colspans so footer cells can span multiple
|
|
930
|
+
|
|
931
|
+
columns like headers and body rows
|
|
932
|
+
|
|
933
|
+
- Preserve legitimate empty table cells that are not part of
|
|
934
|
+
|
|
935
|
+
colspans or rowspans
|
|
936
|
+
|
|
937
|
+
- KaTeX auto-render now properly configures delimiters and
|
|
938
|
+
|
|
939
|
+
manually renders math spans to prevent plain text from
|
|
940
|
+
appearing after rendered equations
|
|
941
|
+
|
|
942
|
+
- Relaxed table header conversion now only runs when
|
|
943
|
+
|
|
944
|
+
relaxed_tables option is enabled
|
|
945
|
+
|
|
946
|
+
- HTML document wrapping now strips existing </body></html>
|
|
947
|
+
|
|
948
|
+
tags to prevent duplicates when content already contains
|
|
949
|
+
them
|
|
950
|
+
|
|
951
|
+
- KaTeX auto-render now properly configures delimiters and
|
|
952
|
+
|
|
953
|
+
manually renders math spans to prevent plain text from
|
|
954
|
+
appearing after rendered equations
|
|
955
|
+
|
|
956
|
+
- Relaxed table header conversion now only runs when
|
|
957
|
+
|
|
958
|
+
relaxed_tables option is enabled
|
|
959
|
+
|
|
960
|
+
- HTML document wrapping now strips existing </body></html>
|
|
961
|
+
|
|
962
|
+
tags to prevent duplicates when content already contains
|
|
963
|
+
them
|
|
964
|
+
|
|
965
|
+
- Table captions appearing after their tables now correctly
|
|
966
|
+
|
|
967
|
+
link via aria-describedby attributes
|
|
968
|
+
|
|
969
|
+
## [0.1.39] - 2025-12-19
|
|
970
|
+
|
|
971
|
+
### Changed
|
|
972
|
+
|
|
973
|
+
- Table post-processing now tracks all cells (including
|
|
974
|
+
|
|
975
|
+
removed ones) to correctly map HTML column positions to
|
|
976
|
+
original AST column indices, ensuring attributes are
|
|
977
|
+
applied to the correct cells.
|
|
978
|
+
|
|
979
|
+
- Added content-based detection for ^^ marker cells during
|
|
980
|
+
|
|
981
|
+
HTML post-processing to ensure they are properly removed
|
|
982
|
+
even when attribute matching fails.
|
|
983
|
+
|
|
984
|
+
### New
|
|
985
|
+
|
|
986
|
+
- Added content verification to prevent false matches when
|
|
987
|
+
|
|
988
|
+
cells are covered by rowspans
|
|
989
|
+
|
|
990
|
+
- Added tracking of previous cell's colspan to detect and
|
|
991
|
+
|
|
992
|
+
remove empty cells after colspan
|
|
993
|
+
|
|
994
|
+
- Added detection and removal of === marker rows in tfoot
|
|
995
|
+
|
|
996
|
+
sections
|
|
997
|
+
|
|
998
|
+
### Improved
|
|
999
|
+
|
|
1000
|
+
- Rowspan cell tracking now uses a per-column active cell
|
|
1001
|
+
|
|
1002
|
+
approach (inspired by Jekyll Spaceship) for more reliable
|
|
1003
|
+
rowspan calculation across complex table structures.
|
|
1004
|
+
|
|
1005
|
+
- Cell matching now uses position-based fallback to previous
|
|
1006
|
+
|
|
1007
|
+
row when current row match fails
|
|
1008
|
+
|
|
1009
|
+
- Row mapping accounts for rowspan coverage to correctly
|
|
1010
|
+
|
|
1011
|
+
identify visible columns
|
|
1012
|
+
|
|
1013
|
+
- Tfoot row detection now uses AST row indices instead of
|
|
1014
|
+
|
|
1015
|
+
HTML row indices for accuracy
|
|
1016
|
+
|
|
1017
|
+
### Fixed
|
|
1018
|
+
|
|
1019
|
+
- Table rowspan rendering now correctly handles rows where
|
|
1020
|
+
|
|
1021
|
+
most cells use ^^ markers. Previously, cells like "Beta"
|
|
1022
|
+
and "Gamma" in rows with multiple ^^ cells would be
|
|
1023
|
+
missing or appear in the wrong position. The fix includes
|
|
1024
|
+
proper mapping between HTML row indices and AST row
|
|
1025
|
+
indices, accounting for separator rows that are removed
|
|
1026
|
+
from HTML output.
|
|
1027
|
+
|
|
1028
|
+
- Missing cells after colspan (e.g., "92.00" cell was
|
|
1029
|
+
|
|
1030
|
+
missing when "Absent" had colspan="2")
|
|
1031
|
+
|
|
1032
|
+
- Rowspan not applying correctly when HTML row mapping was
|
|
1033
|
+
|
|
1034
|
+
off by one
|
|
1035
|
+
|
|
1036
|
+
- Footer alignment rows (=== markers) appearing in output
|
|
1037
|
+
|
|
1038
|
+
instead of being removed
|
|
1039
|
+
|
|
1040
|
+
- Empty cells after colspan not being removed from rendered
|
|
1041
|
+
|
|
1042
|
+
HTML
|
|
1043
|
+
|
|
1044
|
+
## [0.1.38] - 2025-12-18
|
|
1045
|
+
|
|
1046
|
+
### Changed
|
|
1047
|
+
|
|
1048
|
+
- In standalone mode, insert script tags just before </body>
|
|
1049
|
+
- In snippet mode, append script tags at the end of the HTML
|
|
1050
|
+
|
|
1051
|
+
fragment
|
|
1052
|
+
|
|
1053
|
+
- When --embed-css is used with --css, replace the
|
|
1054
|
+
|
|
1055
|
+
stylesheet <link> tag with an inline <style> block
|
|
1056
|
+
containing the CSS file contents
|
|
1057
|
+
|
|
1058
|
+
### New
|
|
1059
|
+
|
|
1060
|
+
- Support Pandoc-style "Table: Caption" syntax and
|
|
1061
|
+
- Add --script CLI flag to inject scripts into HTML output
|
|
1062
|
+
- Support shorthands for common JS libraries (mermaid,
|
|
1063
|
+
|
|
1064
|
+
mathjax, katex, highlightjs, prism, htmx, alpine)
|
|
1065
|
+
|
|
1066
|
+
- Add --embed-css option to inline CSS files into the
|
|
1067
|
+
|
|
1068
|
+
standalone document head
|
|
1069
|
+
|
|
1070
|
+
### Improved
|
|
1071
|
+
|
|
1072
|
+
- Compress extraneous newlines between HTML elements
|
|
1073
|
+
- Remove unused apex_remote_trim helper to eliminate
|
|
1074
|
+
|
|
1075
|
+
compiler warnings
|
|
1076
|
+
|
|
1077
|
+
### Fixed
|
|
1078
|
+
|
|
1079
|
+
- Prevent caption paragraphs from being reused across
|
|
1080
|
+
- Skip URL encoding for footnote definitions ([^id]: ...) so
|
|
1081
|
+
|
|
1082
|
+
footnote
|
|
1083
|
+
|
|
1084
|
+
## [0.1.37] - 2025-12-17
|
|
1085
|
+
|
|
1086
|
+
### Changed
|
|
1087
|
+
|
|
1088
|
+
- Image attributes are mode-dependent: work in Unified and
|
|
1089
|
+
|
|
1090
|
+
MultiMarkdown modes only
|
|
1091
|
+
|
|
1092
|
+
- URL encoding is mode-dependent: works in Unified,
|
|
1093
|
+
|
|
1094
|
+
MultiMarkdown, and Kramdown modes
|
|
1095
|
+
|
|
1096
|
+
- Improved caption detection to check all table rows for
|
|
1097
|
+
|
|
1098
|
+
caption markers, not just the last row, to handle cases
|
|
1099
|
+
where captions come after tfoot rows.
|
|
1100
|
+
|
|
1101
|
+
### New
|
|
1102
|
+
|
|
1103
|
+
- Support for MultiMarkdown-style image attributes in
|
|
1104
|
+
|
|
1105
|
+
unified and MultiMarkdown modes
|
|
1106
|
+
|
|
1107
|
+
Inline image attributes: 
|
|
1108
|
+
|
|
1109
|
+
- Reference-style image attributes: ![][ref] with [ref]: url
|
|
1110
|
+
|
|
1111
|
+
width=300
|
|
1112
|
+
|
|
1113
|
+
- Automatic URL encoding for links with spaces in unified,
|
|
1114
|
+
|
|
1115
|
+
MultiMarkdown, and Kramdown modes
|
|
1116
|
+
|
|
1117
|
+
- URLs with spaces are automatically percent-encoded (e.g.,
|
|
1118
|
+
|
|
1119
|
+
"path with spaces.png" becomes "path%20with%20spaces.png")
|
|
1120
|
+
|
|
1121
|
+
- Added support for MultiMarkdown-style image attributes in
|
|
1122
|
+
|
|
1123
|
+
reference-style images. Reference definitions can now
|
|
1124
|
+
include attributes: [img1]: image.png width=300
|
|
1125
|
+
style="float:left"
|
|
1126
|
+
|
|
1127
|
+
Added support for inline image attributes: 
|
|
1128
|
+
|
|
1129
|
+
- Added automatic URL encoding for all link URLs (images and
|
|
1130
|
+
|
|
1131
|
+
regular links). URLs with spaces are automatically
|
|
1132
|
+
percent-encoded (e.g., "path to/image.png" becomes
|
|
1133
|
+
"path%20to/image.png")
|
|
1134
|
+
|
|
1135
|
+
- Added detection and removal of table alignment separator
|
|
1136
|
+
|
|
1137
|
+
rows that were incorrectly being rendered as table rows.
|
|
1138
|
+
|
|
1139
|
+
- Added test cases for table captions appearing before and
|
|
1140
|
+
|
|
1141
|
+
after tables.
|
|
1142
|
+
|
|
1143
|
+
Added support for tfoot sections in tables using `===` row markers. Rows containing `===` markers are now placed in `<tfoot>` sections, and all subsequent rows after the first `===` row are also placed in tfoot.
|
|
1144
|
+
|
|
1145
|
+
- Added comprehensive table feature tests that validate
|
|
1146
|
+
|
|
1147
|
+
rowspan,
|
|
1148
|
+
|
|
1149
|
+
### Improved
|
|
1150
|
+
|
|
1151
|
+
- Improved attribute injection in HTML renderer to correctly
|
|
1152
|
+
|
|
1153
|
+
place attributes before closing > or /> in img and link
|
|
1154
|
+
tags
|
|
1155
|
+
|
|
1156
|
+
- Enhanced URL parsing to distinguish between spaces within
|
|
1157
|
+
|
|
1158
|
+
URLs vs spaces before attributes using forward-scanning
|
|
1159
|
+
pattern detection
|
|
1160
|
+
|
|
1161
|
+
- Self-closing img tags now consistently use " />" (space
|
|
1162
|
+
|
|
1163
|
+
before slash) when attributes are injected, matching the
|
|
1164
|
+
format used by cmark-gfm for img tags without injected
|
|
1165
|
+
attributes
|
|
1166
|
+
|
|
1167
|
+
- Rowspan and colspan attribute handling now properly
|
|
1168
|
+
|
|
1169
|
+
appends to existing attributes instead of replacing them,
|
|
1170
|
+
allowing multiple attributes to coexist on table cells.
|
|
1171
|
+
|
|
1172
|
+
- Alignment rows (rows containing only '' characters) are
|
|
1173
|
+
|
|
1174
|
+
now detected and marked for removal, preventing them from
|
|
1175
|
+
appearing in HTML output.
|
|
1176
|
+
|
|
1177
|
+
### Fixed
|
|
1178
|
+
|
|
1179
|
+
- Fixed bug where image prefix "![" was incorrectly removed
|
|
1180
|
+
|
|
1181
|
+
during preprocessing of expanded reference-style images
|
|
1182
|
+
|
|
1183
|
+
- URL encoding now only encodes unsafe characters (space,
|
|
1184
|
+
|
|
1185
|
+
control chars, non-ASCII). Valid URL characters like /, :,
|
|
1186
|
+
?, #, ~, etc. are preserved and no longer incorrectly
|
|
1187
|
+
encoded.
|
|
1188
|
+
|
|
1189
|
+
- Titles in links and images are now correctly detected and
|
|
1190
|
+
|
|
1191
|
+
excluded from URL encoding. Supports quoted titles
|
|
1192
|
+
("title", 'title') and parentheses titles ((title)). URLs
|
|
1193
|
+
with parentheses (like Wikipedia links) are correctly
|
|
1194
|
+
distinguished from titles based on whether a space
|
|
1195
|
+
precedes the opening parenthesis.
|
|
1196
|
+
|
|
1197
|
+
- Reference-style images with attributes now render
|
|
1198
|
+
|
|
1199
|
+
correctly. Reference definitions with image attributes are
|
|
1200
|
+
removed from output, while those without attributes are
|
|
1201
|
+
preserved (with URL encoding) so cmark can resolve the
|
|
1202
|
+
references.
|
|
1203
|
+
|
|
1204
|
+
- Spacing between attributes in HTML output. Attributes
|
|
1205
|
+
|
|
1206
|
+
injected into img and link tags now have proper spacing,
|
|
1207
|
+
preventing malformed HTML like alt="text"width="100".
|
|
1208
|
+
|
|
1209
|
+
- Table attributes now render correctly with proper spacing.
|
|
1210
|
+
|
|
1211
|
+
Fixed missing space in table tag when id attribute
|
|
1212
|
+
immediately follows (e.g., <tableid="..." now renders as
|
|
1213
|
+
<table id="...").
|
|
1214
|
+
|
|
1215
|
+
- Rowspan and colspan injection now works correctly in all
|
|
1216
|
+
|
|
1217
|
+
cases. Fixed bug where table tracking variables weren't
|
|
1218
|
+
set when fixing missing space in table tag (e.g.,
|
|
1219
|
+
<tableid="..."), causing row and cell processing to be
|
|
1220
|
+
skipped. Table tracking is now properly initialized even
|
|
1221
|
+
when correcting tag spacing.
|
|
1222
|
+
|
|
1223
|
+
- Captions after tables were not being detected when tables
|
|
1224
|
+
|
|
1225
|
+
had IAL attributes, as IAL processing replaced the caption
|
|
1226
|
+
data stored in user_data. Added fallback logic to check
|
|
1227
|
+
for caption paragraphs directly in the AST when user_data
|
|
1228
|
+
lookup fails.
|
|
1229
|
+
|
|
1230
|
+
- Rows containing only `===` markers are now properly
|
|
1231
|
+
|
|
1232
|
+
skipped entirely rather than rendering as empty cells in
|
|
1233
|
+
tfoot sections.
|
|
1234
|
+
|
|
1235
|
+
- Caption paragraphs before tables are now properly removed,
|
|
1236
|
+
|
|
1237
|
+
## [0.1.36] - 2025-12-16
|
|
1238
|
+
|
|
1239
|
+
### Fixed
|
|
1240
|
+
|
|
1241
|
+
- Resolve CMake error when building framework where
|
|
1242
|
+
|
|
1243
|
+
file(GLOB) returns multiple dylib files, causing
|
|
1244
|
+
semicolon-concatenated paths in file(COPY) command. Now
|
|
1245
|
+
extracts first file from glob result before copying.
|
|
1246
|
+
|
|
1247
|
+
- Homebrew installation now correctly links to system
|
|
1248
|
+
|
|
1249
|
+
libyaml instead of hardcoded CI path
|
|
1250
|
+
|
|
1251
|
+
## [0.1.35] - 2025-12-16
|
|
1252
|
+
|
|
1253
|
+
### Changed
|
|
1254
|
+
|
|
1255
|
+
- Update Homebrew formula to install from a precompiled
|
|
1256
|
+
|
|
1257
|
+
macOS universal binary instead of building from source
|
|
1258
|
+
with cmake.
|
|
1259
|
+
|
|
1260
|
+
- Allow --install-plugin to accept a Git URL or GitHub
|
|
1261
|
+
|
|
1262
|
+
shorthand (user/repo) in addition to directory IDs when
|
|
1263
|
+
installing plugins.
|
|
1264
|
+
|
|
1265
|
+
### Improved
|
|
1266
|
+
|
|
1267
|
+
- Simplify Homebrew installation so users no longer need
|
|
1268
|
+
|
|
1269
|
+
cmake or Xcode build tools to install apex.
|
|
1270
|
+
|
|
1271
|
+
- Add an interactive security confirmation when installing
|
|
1272
|
+
|
|
1273
|
+
plugins from a direct Git URL or GitHub repo name,
|
|
1274
|
+
reminding users that plugins execute unverified code.
|
|
1275
|
+
|
|
1276
|
+
## [0.1.34] - 2025-12-16
|
|
1277
|
+
|
|
1278
|
+
## [0.1.33] - 2025-12-16
|
|
1279
|
+
|
|
1280
|
+
## [0.1.32] - 2025-12-16
|
|
1281
|
+
|
|
1282
|
+
## [0.1.31] - 2025-12-16
|
|
1283
|
+
|
|
1284
|
+
## [0.1.30] - 2025-12-16
|
|
1285
|
+
|
|
1286
|
+
### Changed
|
|
1287
|
+
|
|
1288
|
+
- Make --list-plugins show installed plugins before remote
|
|
1289
|
+
|
|
1290
|
+
ones.
|
|
1291
|
+
|
|
1292
|
+
- Prevent remote plugins that are already installed from
|
|
1293
|
+
|
|
1294
|
+
being listed under Available Plugins.
|
|
1295
|
+
|
|
1296
|
+
- Build system now detects libyaml via multiple methods
|
|
1297
|
+
|
|
1298
|
+
(yaml-0.1, yaml, libyaml) for better cross-platform
|
|
1299
|
+
support.
|
|
1300
|
+
|
|
1301
|
+
- Homebrew formula now includes libyaml as a dependency to
|
|
1302
|
+
|
|
1303
|
+
ensure full YAML support.
|
|
1304
|
+
|
|
1305
|
+
- Suppressed unused-parameter warnings from vendored
|
|
1306
|
+
|
|
1307
|
+
cmark-gfm extensions to reduce build noise.
|
|
1308
|
+
|
|
1309
|
+
### New
|
|
1310
|
+
|
|
1311
|
+
Add --uninstall-plugin CLI flag to remove installed plugins.
|
|
1312
|
+
|
|
1313
|
+
- Run optional post_install command from plugin.yml after
|
|
1314
|
+
|
|
1315
|
+
cloning a plugin.
|
|
1316
|
+
|
|
1317
|
+
- Full YAML parsing support using libyaml for arrays and
|
|
1318
|
+
|
|
1319
|
+
nested structures in metadata and plugin manifests.
|
|
1320
|
+
|
|
1321
|
+
- Plugin bundle support allowing multiple plugins to be
|
|
1322
|
+
|
|
1323
|
+
defined in a single plugin.yml manifest.
|
|
1324
|
+
|
|
1325
|
+
- Expose APEX_FILE_PATH to external plugins so scripts can
|
|
1326
|
+
|
|
1327
|
+
see the original input path or base directory when
|
|
1328
|
+
processing.
|
|
1329
|
+
|
|
1330
|
+
### Improved
|
|
1331
|
+
|
|
1332
|
+
- Split() metadata transform now accepts regular expressions
|
|
1333
|
+
|
|
1334
|
+
as delimiters (for example split(,\s*)).
|
|
1335
|
+
|
|
1336
|
+
- YAML arrays are automatically normalized to
|
|
1337
|
+
|
|
1338
|
+
comma-separated strings for backward compatibility with
|
|
1339
|
+
existing metadata transforms.
|
|
1340
|
+
|
|
1341
|
+
- External plugin environment now includes the source file
|
|
1342
|
+
|
|
1343
|
+
path (when available) alongside APEX_PLUGIN_DIR and
|
|
1344
|
+
APEX_SUPPORT_DIR.
|
|
1345
|
+
|
|
1346
|
+
### Fixed
|
|
1347
|
+
|
|
1348
|
+
- Tighten mutual-exclusion checks between install and
|
|
1349
|
+
|
|
1350
|
+
uninstall plugin flags.
|
|
1351
|
+
|
|
1352
|
+
- Ensure CMake policy version is compatible with vendored
|
|
1353
|
+
|
|
1354
|
+
cmark-gfm on newer CMake releases.
|
|
1355
|
+
|
|
1356
|
+
- Install the Apex framework with its public apex.h header
|
|
1357
|
+
|
|
1358
|
+
correctly embedded in Apex.framework/Headers for Xcode
|
|
1359
|
+
use.
|
|
1360
|
+
|
|
1361
|
+
- Bundle libcmark-gfm and libcmark-gfm-extensions dylibs
|
|
1362
|
+
|
|
1363
|
+
into Apex.framework so dependent apps no longer hit
|
|
1364
|
+
missing library errors at runtime.
|
|
1365
|
+
|
|
1366
|
+
## [0.1.29] - 2025-12-15
|
|
1367
|
+
|
|
1368
|
+
### Changed
|
|
1369
|
+
|
|
1370
|
+
- Make --list-plugins show installed plugins before remote
|
|
1371
|
+
|
|
1372
|
+
ones.
|
|
1373
|
+
|
|
1374
|
+
- Prevent remote plugins that are already installed from
|
|
1375
|
+
|
|
1376
|
+
being listed under Available Plugins.
|
|
1377
|
+
|
|
1378
|
+
### New
|
|
1379
|
+
|
|
1380
|
+
- Initial planning for a remote plugin directory and install
|
|
1381
|
+
|
|
1382
|
+
features
|
|
1383
|
+
|
|
1384
|
+
Add --uninstall-plugin CLI flag to remove installed plugins.
|
|
1385
|
+
|
|
1386
|
+
### Fixed
|
|
1387
|
+
|
|
1388
|
+
- Superscript/subscript no longer process content inside
|
|
1389
|
+
|
|
1390
|
+
Liquid {% %} tags.
|
|
1391
|
+
|
|
1392
|
+
- Autolink detection skips Liquid {% %} tags so emails and
|
|
1393
|
+
|
|
1394
|
+
URLs are not rewritten there.
|
|
1395
|
+
|
|
1396
|
+
- Fix directory url for `--list-plugins`
|
|
1397
|
+
|
|
1398
|
+
## [0.1.28] - 2025-12-15
|
|
1399
|
+
|
|
1400
|
+
### Changed
|
|
1401
|
+
|
|
1402
|
+
- Default wikilink URLs now replace spaces with dashes (e.g.
|
|
1403
|
+
|
|
1404
|
+
[[Home Page]] -> href="Home-Page").
|
|
1405
|
+
|
|
1406
|
+
### New
|
|
1407
|
+
|
|
1408
|
+
- Add --wikilink-space and --wikilink-extension flags to
|
|
1409
|
+
|
|
1410
|
+
control how [[WikiLink]] hrefs are generated.
|
|
1411
|
+
|
|
1412
|
+
- Allow wikilink space and extension configuration via
|
|
1413
|
+
|
|
1414
|
+
metadata keys wikilink-space and wikilink-extension.
|
|
1415
|
+
|
|
1416
|
+
- Support Kramdown-style {:toc ...} markers mapped to Apex
|
|
1417
|
+
|
|
1418
|
+
TOC generation.
|
|
1419
|
+
|
|
1420
|
+
- Add tests for `{:toc}` syntaxes
|
|
1421
|
+
- MMD includes support full glob patterns like {{*.md}} and
|
|
1422
|
+
|
|
1423
|
+
{{c?de.py}}.
|
|
1424
|
+
|
|
1425
|
+
- Add plugin discovery from .apex/plugins and
|
|
1426
|
+
|
|
1427
|
+
~/.config/apex/plugins.
|
|
1428
|
+
|
|
1429
|
+
- Allow external handler plugins in any language via JSON
|
|
1430
|
+
|
|
1431
|
+
stdin/stdout.
|
|
1432
|
+
|
|
1433
|
+
- Support declarative regex plugins for pre_parse and
|
|
1434
|
+
|
|
1435
|
+
post_render phases.
|
|
1436
|
+
|
|
1437
|
+
- Add `--no-plugins` CLI flag to disable all plugins for a
|
|
1438
|
+
|
|
1439
|
+
run.
|
|
1440
|
+
|
|
1441
|
+
- Support `plugins: true/false` metadata to enable or
|
|
1442
|
+
|
|
1443
|
+
disable plugins.
|
|
1444
|
+
|
|
1445
|
+
- Initial planning for a remote plugin directory and install
|
|
1446
|
+
|
|
1447
|
+
features
|
|
1448
|
+
|
|
1449
|
+
### Improved
|
|
1450
|
+
|
|
1451
|
+
- Exclude headings with .no_toc class from generated tables
|
|
1452
|
+
|
|
1453
|
+
of contents for finer-grained TOC control.
|
|
1454
|
+
|
|
1455
|
+
- MMD-style {{file.*}} now resolves preferred extensions
|
|
1456
|
+
|
|
1457
|
+
before globbing.
|
|
1458
|
+
|
|
1459
|
+
- Transclusion respects brace-style patterns such as
|
|
1460
|
+
|
|
1461
|
+
{{{intro,part1}.md}} where supported.
|
|
1462
|
+
|
|
1463
|
+
- Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
|
|
1464
|
+
|
|
1465
|
+
plugin code and data.
|
|
1466
|
+
|
|
1467
|
+
- Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
|
|
1468
|
+
|
|
1469
|
+
## [0.1.27] - 2025-12-15
|
|
1470
|
+
|
|
1471
|
+
### Changed
|
|
1472
|
+
|
|
1473
|
+
- Default wikilink URLs now replace spaces with dashes (e.g.
|
|
1474
|
+
|
|
1475
|
+
[[Home Page]] -> href="Home-Page").
|
|
1476
|
+
|
|
1477
|
+
### New
|
|
1478
|
+
|
|
1479
|
+
- Add --wikilink-space and --wikilink-extension flags to
|
|
1480
|
+
|
|
1481
|
+
control how [[WikiLink]] hrefs are generated.
|
|
1482
|
+
|
|
1483
|
+
- Allow wikilink space and extension configuration via
|
|
1484
|
+
|
|
1485
|
+
metadata keys wikilink-space and wikilink-extension.
|
|
1486
|
+
|
|
1487
|
+
- Support Kramdown-style {:toc ...} markers mapped to Apex
|
|
1488
|
+
|
|
1489
|
+
TOC generation.
|
|
1490
|
+
|
|
1491
|
+
- Add tests for `{:toc}` syntaxes
|
|
1492
|
+
- MMD includes support full glob patterns like {{*.md}} and
|
|
1493
|
+
|
|
1494
|
+
{{c?de.py}}.
|
|
1495
|
+
|
|
1496
|
+
- Add plugin discovery from .apex/plugins and
|
|
1497
|
+
|
|
1498
|
+
~/.config/apex/plugins.
|
|
1499
|
+
|
|
1500
|
+
- Allow external handler plugins in any language via JSON
|
|
1501
|
+
|
|
1502
|
+
stdin/stdout.
|
|
1503
|
+
|
|
1504
|
+
- Support declarative regex plugins for pre_parse and
|
|
1505
|
+
|
|
1506
|
+
post_render phases.
|
|
1507
|
+
|
|
1508
|
+
- Add `--no-plugins` CLI flag to disable all plugins for a
|
|
1509
|
+
|
|
1510
|
+
run.
|
|
1511
|
+
|
|
1512
|
+
- Support `plugins: true/false` metadata to enable or
|
|
1513
|
+
|
|
1514
|
+
disable plugins.
|
|
1515
|
+
|
|
1516
|
+
- Initial planning for a remote plugin directory and install
|
|
1517
|
+
|
|
1518
|
+
features
|
|
1519
|
+
|
|
1520
|
+
### Improved
|
|
1521
|
+
|
|
1522
|
+
- Exclude headings with .no_toc class from generated tables
|
|
1523
|
+
|
|
1524
|
+
of contents for finer-grained TOC control.
|
|
1525
|
+
|
|
1526
|
+
- MMD-style {{file.*}} now resolves preferred extensions
|
|
1527
|
+
|
|
1528
|
+
before globbing.
|
|
1529
|
+
|
|
1530
|
+
- Transclusion respects brace-style patterns such as
|
|
1531
|
+
|
|
1532
|
+
{{{intro,part1}.md}} where supported.
|
|
1533
|
+
|
|
1534
|
+
- Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
|
|
1535
|
+
|
|
1536
|
+
plugin code and data.
|
|
1537
|
+
|
|
1538
|
+
- Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
|
|
1539
|
+
|
|
1540
|
+
## [0.1.26] - 2025-12-14
|
|
1541
|
+
|
|
1542
|
+
### Changed
|
|
1543
|
+
|
|
1544
|
+
- Change `--enable-includes` to `--[no-]includes`, allowing
|
|
1545
|
+
|
|
1546
|
+
`--no-includes` to disable includes in unified mode and
|
|
1547
|
+
shortening the flag
|
|
1548
|
+
|
|
1549
|
+
- Integrate metadata-to-options application into CLI after
|
|
1550
|
+
|
|
1551
|
+
metadata merging
|
|
1552
|
+
|
|
1553
|
+
- Preserve bibliography files array when metadata mode
|
|
1554
|
+
|
|
1555
|
+
resets options structure
|
|
1556
|
+
|
|
1557
|
+
### New
|
|
1558
|
+
|
|
1559
|
+
- Add apex_apply_metadata_to_options() function to apply
|
|
1560
|
+
|
|
1561
|
+
metadata values to apex_options structure
|
|
1562
|
+
|
|
1563
|
+
- Support controlling boolean flags via metadata (indices,
|
|
1564
|
+
|
|
1565
|
+
wikilinks, includes, relaxed-tables, alpha-lists,
|
|
1566
|
+
mixed-lists, sup-sub, autolink, transforms, unsafe,
|
|
1567
|
+
tables, footnotes, smart, math, ids, header-anchors,
|
|
1568
|
+
embed-images, link-citations, show-tooltips,
|
|
1569
|
+
suppress-bibliography, suppress-index,
|
|
1570
|
+
group-index-by-letter, obfuscate-emails, pretty,
|
|
1571
|
+
standalone, hardbreaks)
|
|
1572
|
+
|
|
1573
|
+
- Support controlling string options via metadata
|
|
1574
|
+
|
|
1575
|
+
(bibliography, csl, title, style/css, id-format, base-dir,
|
|
1576
|
+
mode)
|
|
1577
|
+
|
|
1578
|
+
- Boolean metadata values accept true/false, yes/no, or 1/0
|
|
1579
|
+
|
|
1580
|
+
(case-insensitive, downcased)
|
|
1581
|
+
|
|
1582
|
+
- String metadata values used directly for options that take
|
|
1583
|
+
|
|
1584
|
+
arguments
|
|
1585
|
+
|
|
1586
|
+
- Metadata mode option resets options to mode defaults
|
|
1587
|
+
|
|
1588
|
+
before applying other metadata
|
|
1589
|
+
|
|
1590
|
+
- Comprehensive tests for metadata control of command line
|
|
1591
|
+
|
|
1592
|
+
options
|
|
1593
|
+
|
|
1594
|
+
## [0.1.25] - 2025-12-13
|
|
1595
|
+
|
|
1596
|
+
### New
|
|
1597
|
+
|
|
1598
|
+
- Add citation processing with support for Pandoc,
|
|
1599
|
+
|
|
1600
|
+
MultiMarkdown, and mmark syntaxes
|
|
1601
|
+
|
|
1602
|
+
- Add bibliography loading from BibTeX, CSL JSON, and CSL
|
|
1603
|
+
|
|
1604
|
+
YAML formats
|
|
1605
|
+
|
|
1606
|
+
- Add --bibliography CLI option to specify bibliography
|
|
1607
|
+
|
|
1608
|
+
files (can be used multiple times)
|
|
1609
|
+
|
|
1610
|
+
- Add --csl CLI option to specify citation style file
|
|
1611
|
+
- Add --no-bibliography CLI option to suppress bibliography
|
|
1612
|
+
|
|
1613
|
+
output
|
|
1614
|
+
|
|
1615
|
+
- Add --link-citations CLI option to link citations to
|
|
1616
|
+
|
|
1617
|
+
bibliography entries
|
|
1618
|
+
|
|
1619
|
+
- Add --show-tooltips CLI option for citation tooltips
|
|
1620
|
+
- Add bibliography generation and insertion at <!--
|
|
1621
|
+
|
|
1622
|
+
REFERENCES --> marker
|
|
1623
|
+
|
|
1624
|
+
Add support for bibliography specified in document metadata
|
|
1625
|
+
|
|
1626
|
+
- Added missing docs and man page for citation support
|
|
1627
|
+
- Add support for transclude base metadata to control file
|
|
1628
|
+
|
|
1629
|
+
transclusion paths
|
|
1630
|
+
|
|
1631
|
+
- Add Base Header Level and HTML Header Level metadata to
|
|
1632
|
+
|
|
1633
|
+
adjust heading levels
|
|
1634
|
+
|
|
1635
|
+
- Add CSS metadata to link external stylesheets in
|
|
1636
|
+
|
|
1637
|
+
standalone HTML documents
|
|
1638
|
+
|
|
1639
|
+
- Add HTML Header and HTML Footer metadata to inject custom
|
|
1640
|
+
|
|
1641
|
+
HTML
|
|
1642
|
+
|
|
1643
|
+
- Add Language metadata to set HTML lang attribute in
|
|
1644
|
+
|
|
1645
|
+
standalone documents
|
|
1646
|
+
|
|
1647
|
+
- Add Quotes Language metadata to control smart quote styles
|
|
1648
|
+
|
|
1649
|
+
(French, German, Spanish, etc.)
|
|
1650
|
+
|
|
1651
|
+
- Add --css CLI flag as alias for --style with metadata
|
|
1652
|
+
|
|
1653
|
+
override precedence
|
|
1654
|
+
|
|
1655
|
+
- Add metadata key normalization: case-insensitive matching
|
|
1656
|
+
|
|
1657
|
+
with spaces removed (e.g., "HTML Header Level" matches
|
|
1658
|
+
"htmlheaderlevel")
|
|
1659
|
+
|
|
1660
|
+
- Add index extension supporting mmark syntax (!item),
|
|
1661
|
+
|
|
1662
|
+
(!item, subitem), and (!!item, subitem) for primary
|
|
1663
|
+
entries
|
|
1664
|
+
|
|
1665
|
+
- Add TextIndex syntax support with {^}, [term]{^}, and
|
|
1666
|
+
|
|
1667
|
+
{^params} patterns
|
|
1668
|
+
|
|
1669
|
+
- Add automatic index generation at end of document or at
|
|
1670
|
+
|
|
1671
|
+
<!--INDEX--> marker
|
|
1672
|
+
|
|
1673
|
+
- Add alphabetical sorting and optional grouping by first
|
|
1674
|
+
|
|
1675
|
+
letter for index entries
|
|
1676
|
+
|
|
1677
|
+
- Add hierarchical sub-item support in generated index
|
|
1678
|
+
- Add --indices CLI flag to enable index processing
|
|
1679
|
+
- Add --no-indices CLI flag to disable index processing
|
|
1680
|
+
- Add --no-index CLI flag to suppress index generation while
|
|
1681
|
+
|
|
1682
|
+
keeping markers
|
|
1683
|
+
|
|
1684
|
+
- Add comprehensive test suite with 40 index tests covering
|
|
1685
|
+
|
|
1686
|
+
both syntaxes
|
|
1687
|
+
|
|
1688
|
+
### Improved
|
|
1689
|
+
|
|
1690
|
+
- Only process citations when bibliography is actually
|
|
1691
|
+
|
|
1692
|
+
provided for better performance
|
|
1693
|
+
|
|
1694
|
+
- Add comprehensive tests for MultiMarkdown metadata keys
|
|
1695
|
+
- Add comprehensive performance profiling system
|
|
1696
|
+
|
|
1697
|
+
(APEX_PROFILE=1) to measure processing time for all
|
|
1698
|
+
extensions and CLI operations
|
|
1699
|
+
|
|
1700
|
+
- Add early exit checks for IAL processing when no {:
|
|
1701
|
+
|
|
1702
|
+
markers are present
|
|
1703
|
+
|
|
1704
|
+
- Add early exit checks for index processing when no index
|
|
1705
|
+
|
|
1706
|
+
patterns are found
|
|
1707
|
+
|
|
1708
|
+
- Add early exit checks for citation processing when no
|
|
1709
|
+
|
|
1710
|
+
citation patterns are found
|
|
1711
|
+
|
|
1712
|
+
- Add early exit checks for definition list processing when
|
|
1713
|
+
|
|
1714
|
+
no : patterns are found
|
|
1715
|
+
|
|
1716
|
+
- Optimize alpha lists postprocessing with single-pass
|
|
1717
|
+
|
|
1718
|
+
algorithm replacing O(n*m) strstr() loops
|
|
1719
|
+
|
|
1720
|
+
- Add early exit check for alpha lists postprocessing when
|
|
1721
|
+
|
|
1722
|
+
no markers are present
|
|
1723
|
+
|
|
1724
|
+
- Optimize file I/O by using fwrite() with known length
|
|
1725
|
+
|
|
1726
|
+
instead of fputs()
|
|
1727
|
+
|
|
1728
|
+
- Add markdown syntax detection in definition lists to skip
|
|
1729
|
+
|
|
1730
|
+
parser creation for plain text
|
|
1731
|
+
|
|
1732
|
+
- Optimize definition lists by selectively extracting only
|
|
1733
|
+
|
|
1734
|
+
needed reference definitions instead of prepending all
|
|
1735
|
+
|
|
1736
|
+
- Add profiling instrumentation for all preprocessing,
|
|
1737
|
+
|
|
1738
|
+
parsing, rendering, and post-processing steps
|
|
1739
|
+
|
|
1740
|
+
- Add profiling instrumentation for CLI operations (file
|
|
1741
|
+
|
|
1742
|
+
I/O, metadata processing)
|
|
1743
|
+
|
|
1744
|
+
### Fixed
|
|
1745
|
+
|
|
1746
|
+
- Prevent autolinking of @ symbols in citation syntax (e.g.,
|
|
1747
|
+
|
|
1748
|
+
[@key])
|
|
1749
|
+
|
|
1750
|
+
- Handle HTML comments in autolinker to preserve citation
|
|
1751
|
+
|
|
1752
|
+
placeholders
|
|
1753
|
+
|
|
1754
|
+
- Fix quote language adjustment to handle Unicode curly
|
|
1755
|
+
|
|
1756
|
+
quotes in addition to HTML entities
|
|
1757
|
+
|
|
1758
|
+
Fix bibliography_files assignment to remove unnecessary cast
|
|
1759
|
+
|
|
1760
|
+
- Fix heap-buffer-overflow in html_renderer.c when writing
|
|
1761
|
+
|
|
1762
|
+
null terminator (allocate capacity+1)
|
|
1763
|
+
|
|
1764
|
+
- Fix use-after-free in ial.c by deferring node unlinking
|
|
1765
|
+
|
|
1766
|
+
until after iteration completes
|
|
1767
|
+
|
|
1768
|
+
- Fix buffer overflow in definition_list.c HTML entity
|
|
1769
|
+
|
|
1770
|
+
escaping (correct length calculation for & and ")
|
|
1771
|
+
|
|
1772
|
+
## [0.1.24] - 2025-12-13
|
|
1773
|
+
|
|
1774
|
+
### New
|
|
1775
|
+
|
|
1776
|
+
- Add citation processing with support for Pandoc,
|
|
1777
|
+
|
|
1778
|
+
MultiMarkdown, and mmark syntaxes
|
|
1779
|
+
|
|
1780
|
+
- Add bibliography loading from BibTeX, CSL JSON, and CSL
|
|
1781
|
+
|
|
1782
|
+
YAML formats
|
|
1783
|
+
|
|
1784
|
+
- Add --bibliography CLI option to specify bibliography
|
|
1785
|
+
|
|
1786
|
+
files (can be used multiple times)
|
|
1787
|
+
|
|
1788
|
+
- Add --csl CLI option to specify citation style file
|
|
1789
|
+
- Add --no-bibliography CLI option to suppress bibliography
|
|
1790
|
+
|
|
1791
|
+
output
|
|
1792
|
+
|
|
1793
|
+
- Add --link-citations CLI option to link citations to
|
|
1794
|
+
|
|
1795
|
+
bibliography entries
|
|
1796
|
+
|
|
1797
|
+
- Add --show-tooltips CLI option for citation tooltips
|
|
1798
|
+
- Add bibliography generation and insertion at <!--
|
|
1799
|
+
|
|
1800
|
+
REFERENCES --> marker
|
|
1801
|
+
|
|
1802
|
+
Add support for bibliography specified in document metadata
|
|
1803
|
+
|
|
1804
|
+
### Improved
|
|
1805
|
+
|
|
1806
|
+
- Only process citations when bibliography is actually
|
|
1807
|
+
|
|
1808
|
+
provided for better performance
|
|
1809
|
+
|
|
1810
|
+
### Fixed
|
|
1811
|
+
|
|
1812
|
+
- Raw HTML tags and comments are now preserved in definition
|
|
1813
|
+
|
|
1814
|
+
lists by default in unified mode. Previously, HTML content
|
|
1815
|
+
in definition list definitions was being replaced with
|
|
1816
|
+
"raw HTML omitted" even when using --unsafe or in unified
|
|
1817
|
+
mode.
|
|
1818
|
+
|
|
1819
|
+
- Unified mode now explicitly sets unsafe=true by default to
|
|
1820
|
+
|
|
1821
|
+
ensure raw HTML is allowed.
|
|
1822
|
+
|
|
1823
|
+
- Prevent autolinking of @ symbols in citation syntax (e.g.,
|
|
1824
|
+
|
|
1825
|
+
[@key])
|
|
1826
|
+
|
|
1827
|
+
- Handle HTML comments in autolinker to preserve citation
|
|
1828
|
+
|
|
1829
|
+
placeholders
|
|
1830
|
+
|
|
1831
|
+
## [0.1.23] - 2025-12-12
|
|
1832
|
+
|
|
1833
|
+
### Changed
|
|
1834
|
+
|
|
1835
|
+
- Remove remote image embedding support (curl dependency
|
|
1836
|
+
|
|
1837
|
+
removed)
|
|
1838
|
+
|
|
1839
|
+
### New
|
|
1840
|
+
|
|
1841
|
+
- Add metadata variable transforms with [%key:transform]
|
|
1842
|
+
|
|
1843
|
+
syntax
|
|
1844
|
+
|
|
1845
|
+
- Add --transforms and --no-transforms flags to
|
|
1846
|
+
|
|
1847
|
+
enable/disable transforms
|
|
1848
|
+
|
|
1849
|
+
- Add 19 text transforms: upper, lower, title, capitalize,
|
|
1850
|
+
|
|
1851
|
+
trim, slug, replace (with regex support), substring,
|
|
1852
|
+
truncate, default, html_escape, basename, urlencode,
|
|
1853
|
+
urldecode, prefix, suffix, remove, repeat, reverse,
|
|
1854
|
+
format, length, pad, contains
|
|
1855
|
+
|
|
1856
|
+
- Add array transforms: split, join, first, last, slice
|
|
1857
|
+
- Add date/time transform: strftime with date parsing
|
|
1858
|
+
- Add transform chaining support (multiple transforms
|
|
1859
|
+
|
|
1860
|
+
separated by colons)
|
|
1861
|
+
|
|
1862
|
+
- Add --meta-file flag to load metadata from external files
|
|
1863
|
+
|
|
1864
|
+
(YAML, MMD, or Pandoc format, auto-detected)
|
|
1865
|
+
|
|
1866
|
+
- Add --meta KEY=VALUE flag to set metadata from command
|
|
1867
|
+
|
|
1868
|
+
line (supports multiple flags and comma-separated pairs)
|
|
1869
|
+
|
|
1870
|
+
- Add metadata merging with proper precedence: command-line
|
|
1871
|
+
> document > file
|
|
1872
|
+
- Add --embed-images flag to embed local images as base64
|
|
1873
|
+
|
|
1874
|
+
data URLs in HTML output
|
|
1875
|
+
|
|
1876
|
+
- Add --base-dir flag to set base directory for resolving
|
|
1877
|
+
|
|
1878
|
+
relative paths (images, includes, wiki links)
|
|
1879
|
+
|
|
1880
|
+
- Add automatic base directory detection from input file
|
|
1881
|
+
|
|
1882
|
+
directory when reading from file
|
|
1883
|
+
|
|
1884
|
+
- Add base64 encoding utility for image data
|
|
1885
|
+
- Add MIME type detection from file extensions (supports
|
|
1886
|
+
|
|
1887
|
+
jpg, png, gif, webp, svg, bmp, ico)
|
|
1888
|
+
|
|
1889
|
+
- Add image embedding function that processes HTML and
|
|
1890
|
+
|
|
1891
|
+
replaces local image src attributes with data URLs
|
|
1892
|
+
|
|
1893
|
+
- Add test suite for image embedding functionality
|
|
1894
|
+
|
|
1895
|
+
### Improved
|
|
1896
|
+
|
|
1897
|
+
- Wiki link scanner now processes all links in a text node
|
|
1898
|
+
|
|
1899
|
+
in a single pass instead of recursively processing one at
|
|
1900
|
+
a time, significantly improving performance for documents
|
|
1901
|
+
with multiple wiki links per text node.
|
|
1902
|
+
|
|
1903
|
+
- Added early-exit optimization to skip wiki link AST
|
|
1904
|
+
|
|
1905
|
+
traversal entirely when no wiki link markers are present
|
|
1906
|
+
in the document.
|
|
1907
|
+
|
|
1908
|
+
- Improve error handling in transform execution to return
|
|
1909
|
+
|
|
1910
|
+
original value instead of NULL on failure
|
|
1911
|
+
|
|
1912
|
+
- Add comprehensive test coverage for all transforms
|
|
1913
|
+
|
|
1914
|
+
including edge cases
|
|
1915
|
+
|
|
1916
|
+
- Relative path resolution for images now uses
|
|
1917
|
+
|
|
1918
|
+
base_directory option
|
|
1919
|
+
|
|
1920
|
+
- Base directory is automatically set from input file
|
|
1921
|
+
|
|
1922
|
+
location when not specified
|
|
1923
|
+
|
|
1924
|
+
### Fixed
|
|
1925
|
+
|
|
1926
|
+
- Fix bracket handling in regex patterns - properly match
|
|
1927
|
+
|
|
1928
|
+
closing brackets in [%...] syntax when patterns contain
|
|
1929
|
+
brackets
|
|
1930
|
+
|
|
1931
|
+
- Fix YAML metadata parsing to strip quotes from quoted
|
|
1932
|
+
|
|
1933
|
+
string values
|
|
1934
|
+
|
|
1935
|
+
- Raw HTML tags and comments are now preserved in definition
|
|
1936
|
+
|
|
1937
|
+
lists by default in unified mode. Previously, HTML content
|
|
1938
|
+
in definition list definitions was being replaced with
|
|
1939
|
+
"raw HTML omitted" even when using --unsafe or in unified
|
|
1940
|
+
mode.
|
|
1941
|
+
|
|
1942
|
+
- Unified mode now explicitly sets unsafe=true by default to
|
|
1943
|
+
|
|
1944
|
+
ensure raw HTML is allowed.
|
|
1945
|
+
|
|
1946
|
+
## [0.1.20] - 2025-12-11
|
|
1947
|
+
|
|
1948
|
+
#### NEW
|
|
1949
|
+
|
|
1950
|
+
- Added man page generation and installation support. Man
|
|
1951
|
+
|
|
1952
|
+
pages can be generated from Markdown source using pandoc
|
|
1953
|
+
or go-md2man, with pre-generated man pages included in the
|
|
1954
|
+
repository as fallback. CMake build system now handles man
|
|
1955
|
+
page installation, and Homebrew formula installs the man
|
|
1956
|
+
page.
|
|
1957
|
+
|
|
1958
|
+
- Added comprehensive test suite for MMD 6 features
|
|
1959
|
+
|
|
1960
|
+
including multi-line setext headers and link/image titles
|
|
1961
|
+
with different quote styles (single quotes, double quotes,
|
|
1962
|
+
parentheses). Tests verify these features work in both
|
|
1963
|
+
MultiMarkdown and unified modes.
|
|
1964
|
+
|
|
1965
|
+
- Added build-test man_page_copy target for man page
|
|
1966
|
+
|
|
1967
|
+
installation.
|
|
1968
|
+
|
|
1969
|
+
- Added --obfuscate-emails flag to hex-encode mailto links.
|
|
1970
|
+
|
|
1971
|
+
#### IMPROVED
|
|
1972
|
+
|
|
1973
|
+
- Superscript processing now stops at sentence terminators
|
|
1974
|
+
|
|
1975
|
+
(. , ; : ! ?) instead of including them in the superscript
|
|
1976
|
+
content. This prevents punctuation from being incorrectly
|
|
1977
|
+
included in superscripts.
|
|
1978
|
+
|
|
1979
|
+
- Enhanced subscript and underline detection logic. The
|
|
1980
|
+
|
|
1981
|
+
processor now correctly differentiates between subscript
|
|
1982
|
+
(tildes within a word, e.g., H~2~O) and underline (tildes
|
|
1983
|
+
at word boundaries, e.g., ~text~) by checking if tildes
|
|
1984
|
+
are within alphanumeric words or at word boundaries.
|
|
1985
|
+
|
|
1986
|
+
- Expanded test coverage for superscript, subscript,
|
|
1987
|
+
|
|
1988
|
+
underline, strikethrough, and highlight features with
|
|
1989
|
+
additional edge case tests.
|
|
1990
|
+
|
|
1991
|
+
- Email autolink detection trims trailing punctuation.
|
|
1992
|
+
|
|
1993
|
+
#### FIXED
|
|
1994
|
+
|
|
1995
|
+
- Autolink now only wraps real URLs/emails instead of every
|
|
1996
|
+
|
|
1997
|
+
word.
|
|
1998
|
+
|
|
1999
|
+
Email autolinks now use mailto: hrefs instead of bare text.
|
|
2000
|
+
|
|
2001
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
2002
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
2003
|
+
|
|
2004
|
+
## [0.1.19] - 2025-12-09
|
|
2005
|
+
|
|
2006
|
+
#### CHANGED
|
|
2007
|
+
|
|
2008
|
+
- HTML comments now replaced with "raw HTML omitted" in
|
|
2009
|
+
|
|
2010
|
+
CommonMark and GFM modes by default
|
|
2011
|
+
|
|
2012
|
+
- Added enable_sup_sub flag to apex_options struct
|
|
2013
|
+
- Updated mode configurations to enable sup/sub in
|
|
2014
|
+
|
|
2015
|
+
appropriate modes
|
|
2016
|
+
|
|
2017
|
+
- Added sup_sub.c to CMakeLists.txt build configuration
|
|
2018
|
+
- Removed unused variables to resolve compiler warnings
|
|
2019
|
+
- Tag filter (GFM security feature) now only applies in GFM
|
|
2020
|
+
|
|
2021
|
+
mode, not Unified mode, allowing raw HTML and autolinks in
|
|
2022
|
+
Unified mode as intended.
|
|
2023
|
+
|
|
2024
|
+
- Autolink extension registration now respects the
|
|
2025
|
+
|
|
2026
|
+
enable_autolink option flag.
|
|
2027
|
+
|
|
2028
|
+
#### NEW
|
|
2029
|
+
|
|
2030
|
+
- Added MultiMarkdown-style superscript (^text^) and
|
|
2031
|
+
|
|
2032
|
+
subscript (~text~) syntax support
|
|
2033
|
+
|
|
2034
|
+
- Added --[no-]sup-sub command-line option to enable/disable
|
|
2035
|
+
|
|
2036
|
+
superscript/subscript
|
|
2037
|
+
|
|
2038
|
+
- Superscript/subscript enabled by default in unified and
|
|
2039
|
+
|
|
2040
|
+
MultiMarkdown modes
|
|
2041
|
+
|
|
2042
|
+
- Created sup_sub extension (sup_sub.c and sup_sub.h) for
|
|
2043
|
+
|
|
2044
|
+
processing ^ and ~ syntax
|
|
2045
|
+
|
|
2046
|
+
- Added --[no-]unsafe command-line option to control raw
|
|
2047
|
+
|
|
2048
|
+
HTML handling
|
|
2049
|
+
|
|
2050
|
+
- Added test_sup_sub() function with 13 tests covering
|
|
2051
|
+
|
|
2052
|
+
superscript and
|
|
2053
|
+
|
|
2054
|
+
- Added test_mixed_lists() function with 10 tests covering
|
|
2055
|
+
|
|
2056
|
+
mixed list
|
|
2057
|
+
|
|
2058
|
+
- Added test_unsafe_mode() function with 8 tests covering
|
|
2059
|
+
|
|
2060
|
+
raw HTML
|
|
2061
|
+
|
|
2062
|
+
- Added preprocessing for angle-bracket autolinks
|
|
2063
|
+
|
|
2064
|
+
(<http://...>) to convert them to explicit markdown links,
|
|
2065
|
+
ensuring they work correctly with custom rendering paths.
|
|
2066
|
+
|
|
2067
|
+
- Added --[no-]autolink CLI option to control automatic
|
|
2068
|
+
|
|
2069
|
+
linking of URLs and email addresses. Autolinking is
|
|
2070
|
+
enabled by default in GFM, MultiMarkdown, Kramdown, and
|
|
2071
|
+
unified modes, and disabled in CommonMark mode.
|
|
2072
|
+
|
|
2073
|
+
- Added enable_autolink field to apex_options structure to
|
|
2074
|
+
|
|
2075
|
+
control autolink behavior programmatically.
|
|
2076
|
+
|
|
2077
|
+
- Added underline syntax support: ~text~ now renders as
|
|
2078
|
+
|
|
2079
|
+
<u>text</u> when there's a closing ~ with no space before
|
|
2080
|
+
it.
|
|
2081
|
+
|
|
2082
|
+
#### IMPROVED
|
|
2083
|
+
|
|
2084
|
+
- Test suite now includes 36 additional tests, increasing
|
|
2085
|
+
|
|
2086
|
+
total test
|
|
2087
|
+
|
|
2088
|
+
- Autolink preprocessing now skips processing inside code
|
|
2089
|
+
|
|
2090
|
+
spans (`...`) and code blocks (```...```), preventing URLs
|
|
2091
|
+
from being converted to links when they appear in code
|
|
2092
|
+
examples.
|
|
2093
|
+
|
|
2094
|
+
- Metadata replacement retains HTML edge-case handling and
|
|
2095
|
+
|
|
2096
|
+
properly cleans up intermediate buffers.
|
|
2097
|
+
|
|
2098
|
+
#### FIXED
|
|
2099
|
+
|
|
2100
|
+
- Unified mode now correctly enables mixed list markers and
|
|
2101
|
+
|
|
2102
|
+
alpha lists by default when no --mode is specified
|
|
2103
|
+
|
|
2104
|
+
- ^ marker now properly separates lists by creating a
|
|
2105
|
+
|
|
2106
|
+
paragraph break instead of just blank lines
|
|
2107
|
+
|
|
2108
|
+
- Empty paragraphs created by ^ marker are now removed from
|
|
2109
|
+
|
|
2110
|
+
final HTML output
|
|
2111
|
+
|
|
2112
|
+
- Superscript and subscript processing now skips ^ and ~
|
|
2113
|
+
|
|
2114
|
+
characters
|
|
2115
|
+
|
|
2116
|
+
- Superscript processing now skips ^ when part of footnote
|
|
2117
|
+
|
|
2118
|
+
reference
|
|
2119
|
+
|
|
2120
|
+
- Subscript processing now skips ~ when part of critic
|
|
2121
|
+
|
|
2122
|
+
markup patterns
|
|
2123
|
+
|
|
2124
|
+
- Setext headers are no longer broken when followed by
|
|
2125
|
+
|
|
2126
|
+
highlight syntax (==text==). Highlight processing now
|
|
2127
|
+
stops at line breaks to prevent interference with header
|
|
2128
|
+
parsing.
|
|
2129
|
+
|
|
2130
|
+
- Metadata parser no longer incorrectly treats URLs and
|
|
2131
|
+
|
|
2132
|
+
angle-bracket autolinks as metadata. Lines containing < or
|
|
2133
|
+
URLs (http://, https://, mailto:) are now skipped during
|
|
2134
|
+
metadata extraction.
|
|
2135
|
+
|
|
2136
|
+
- Superscript/subscript processor now correctly
|
|
2137
|
+
|
|
2138
|
+
differentiates between ~text~ (underline), ~word
|
|
2139
|
+
(subscript), and ~~text~~ (strikethrough). Double-tilde
|
|
2140
|
+
sequences are skipped so strikethrough extension can
|
|
2141
|
+
handle them.
|
|
2142
|
+
|
|
2143
|
+
- Subscript processing now stops at sentence terminators (.
|
|
2144
|
+
|
|
2145
|
+
, ; : ! ?) instead of including them in the subscript
|
|
2146
|
+
content.
|
|
2147
|
+
|
|
2148
|
+
- Metadata variable replacement now runs before autolinking
|
|
2149
|
+
|
|
2150
|
+
so [%key] values containing URLs are turned into links
|
|
2151
|
+
when autolinking is enabled.
|
|
2152
|
+
|
|
2153
|
+
- MMD metadata parsing no longer incorrectly rejects entries
|
|
2154
|
+
|
|
2155
|
+
with URL values; only URL-like keys or '<' characters in
|
|
2156
|
+
keys are rejected, allowing "URL: https://example.com" as
|
|
2157
|
+
valid metadata.
|
|
2158
|
+
|
|
2159
|
+
Headers starting with `#` are now correctly recognized instead of being treated as autolinks. The autolink preprocessor now skips `#` at the start of a line when followed by whitespace.
|
|
2160
|
+
|
|
2161
|
+
Math processor now validates that `\(...\)` sequences contain actual math content (letters, numbers, or operators) before processing them. This prevents false positives like `\(%\)` from being treated as math when they only contain special characters.
|
|
2162
|
+
|
|
2163
|
+
## [0.1.18] - 2025-12-06
|
|
2164
|
+
|
|
2165
|
+
### Fixed
|
|
2166
|
+
- GitHub Actions workflow now properly builds separate Linux
|
|
2167
|
+
|
|
2168
|
+
x86_64 and ARM64 binaries
|
|
2169
|
+
|
|
2170
|
+
## [0.1.17] - 2025-12-06
|
|
2171
|
+
|
|
2172
|
+
### Fixed
|
|
2173
|
+
- Relaxed tables now disabled by default for CommonMark,
|
|
2174
|
+
|
|
2175
|
+
GFM, and MultiMarkdown modes (only enabled for Kramdown
|
|
2176
|
+
and Unified modes)
|
|
2177
|
+
|
|
2178
|
+
- Header ID extraction no longer incorrectly parses metadata
|
|
2179
|
+
|
|
2180
|
+
variables like `[%title]` as MMD-style header IDs
|
|
2181
|
+
|
|
2182
|
+
- Tables with alignment/separator rows now correctly
|
|
2183
|
+
|
|
2184
|
+
generate `<thead>` even when relaxed table mode is enabled
|
|
2185
|
+
|
|
2186
|
+
- Relaxed tables preprocessor preserves input newline
|
|
2187
|
+
|
|
2188
|
+
behavior in output
|
|
2189
|
+
|
|
2190
|
+
- Memory management bug in IAL preprocessing removed
|
|
2191
|
+
|
|
2192
|
+
unnecessary free call
|
|
2193
|
+
|
|
2194
|
+
## [0.1.16] - 2025-12-06
|
|
2195
|
+
|
|
2196
|
+
### Fixed
|
|
2197
|
+
- IAL (Inline Attribute List) markers appearing immediately
|
|
2198
|
+
|
|
2199
|
+
after content without a blank line are now correctly
|
|
2200
|
+
parsed
|
|
2201
|
+
|
|
2202
|
+
Added `apex_preprocess_ial()` function to ensure Kramdown-style IAL syntax works correctly with cmark-gfm parser
|
|
2203
|
+
|
|
2204
|
+
## [0.1.15] - 2025-12-06
|
|
2205
|
+
|
|
2206
|
+
### Fixed
|
|
2207
|
+
- Homebrew formula updated with correct version and commit
|
|
2208
|
+
|
|
2209
|
+
hash
|
|
2210
|
+
|
|
2211
|
+
## [0.1.10] - 2025-12-06
|
|
2212
|
+
|
|
2213
|
+
### Changed
|
|
2214
|
+
- License changed to MIT
|
|
2215
|
+
|
|
2216
|
+
### Added
|
|
2217
|
+
- Homebrew formula update scripts
|
|
2218
|
+
|
|
2219
|
+
## [0.1.9] - 2025-12-06
|
|
2220
|
+
|
|
2221
|
+
### Fixed
|
|
2222
|
+
- Shell syntax in Linux checksum step for GitHub Actions
|
|
2223
|
+
|
|
2224
|
+
## [0.1.8] - 2025-12-06
|
|
2225
|
+
|
|
2226
|
+
### Fixed
|
|
2227
|
+
- Link order for Linux static builds
|
|
2228
|
+
|
|
2229
|
+
## [0.1.7] - 2025-12-06
|
|
2230
|
+
|
|
2231
|
+
### Fixed
|
|
2232
|
+
- Added write permissions for GitHub releases
|
|
2233
|
+
|
|
2234
|
+
## [0.1.6] - 2025-12-06
|
|
2235
|
+
|
|
2236
|
+
### Fixed
|
|
2237
|
+
`.gitignore` pattern fixed to properly include apex headers (was incorrectly matching `include/apex/`)
|
|
2238
|
+
|
|
2239
|
+
## [0.1.5] - 2025-12-06
|
|
2240
|
+
|
|
2241
|
+
### Changed
|
|
2242
|
+
- Added verbose build output for CI debugging
|
|
2243
|
+
|
|
2244
|
+
## [0.1.4] - 2025-12-06
|
|
2245
|
+
|
|
2246
|
+
### Fixed
|
|
2247
|
+
- CMake build rules updated
|
|
2248
|
+
|
|
2249
|
+
## [0.1.3] - 2025-12-06
|
|
2250
|
+
|
|
2251
|
+
### Fixed
|
|
2252
|
+
- CMake policy version for cmark-gfm compatibility
|
|
2253
|
+
|
|
2254
|
+
## [0.1.2] - 2025-12-06
|
|
2255
|
+
|
|
2256
|
+
### Fixed
|
|
2257
|
+
- GitHub Actions workflow fixes
|
|
2258
|
+
|
|
2259
|
+
## [0.1.1] - 2025-12-04
|
|
2260
|
+
|
|
2261
|
+
### Added
|
|
2262
|
+
- CMake setup documentation
|
|
2263
|
+
|
|
2264
|
+
## [0.1.0] - 2025-12-04
|
|
2265
|
+
|
|
2266
|
+
### Added
|
|
2267
|
+
|
|
2268
|
+
**Core Features:**
|
|
2269
|
+
|
|
2270
|
+
- Initial release of Apex unified Markdown processor
|
|
2271
|
+
- Based on cmark-gfm for CommonMark + GFM support
|
|
2272
|
+
- Support for 5 processor modes: CommonMark, GFM,
|
|
2273
|
+
|
|
2274
|
+
MultiMarkdown, Kramdown, Unified
|
|
2275
|
+
|
|
2276
|
+
**Metadata:**
|
|
2277
|
+
|
|
2278
|
+
- YAML front matter parsing
|
|
2279
|
+
- MultiMarkdown metadata format
|
|
2280
|
+
- Pandoc title block format
|
|
2281
|
+
- Metadata variable replacement with `[%key]` syntax
|
|
2282
|
+
|
|
2283
|
+
**Extended Syntax:**
|
|
2284
|
+
|
|
2285
|
+
- Wiki-style links: `[[Page]]`, `[[Page|Display]]`,
|
|
2286
|
+
|
|
2287
|
+
`[[Page#Section]]`
|
|
2288
|
+
|
|
2289
|
+
- Math support: `$inline$` and `$$display$$` with LaTeX
|
|
2290
|
+
- Critic Markup: All 5 types ({++add++}, {--del--},
|
|
2291
|
+
|
|
2292
|
+
{~~sub~~}, {==mark==}, {>>comment<<})
|
|
2293
|
+
|
|
2294
|
+
- GFM tables, strikethrough, task lists, autolinks
|
|
2295
|
+
- Reference-style footnotes
|
|
2296
|
+
- Smart typography (smart quotes, dashes, ellipsis)
|
|
2297
|
+
|
|
2298
|
+
**Build System:**
|
|
2299
|
+
|
|
2300
|
+
- CMake build system for cross-platform support
|
|
2301
|
+
- Builds shared library, static library, CLI binary, and
|
|
2302
|
+
|
|
2303
|
+
macOS framework
|
|
2304
|
+
|
|
2305
|
+
- Clean compilation on macOS with Apple Clang
|
|
2306
|
+
|
|
2307
|
+
**CLI Tool:**
|
|
2308
|
+
|
|
2309
|
+
- `apex` command-line binary
|
|
2310
|
+
- Support for all processor modes via `--mode` flag
|
|
2311
|
+
- Stdin/stdout support for Unix pipes
|
|
2312
|
+
- Comprehensive help and version information
|
|
2313
|
+
|
|
2314
|
+
**Integration:**
|
|
2315
|
+
|
|
2316
|
+
Objective-C wrapper (`NSString+Apex`) for Marked integration
|
|
2317
|
+
|
|
2318
|
+
- macOS framework with proper exports
|
|
2319
|
+
- Detailed integration documentation and examples
|
|
2320
|
+
|
|
2321
|
+
**Testing:**
|
|
2322
|
+
|
|
2323
|
+
- Automated test suite with 31 tests
|
|
2324
|
+
- 90% pass rate across all feature areas
|
|
2325
|
+
- Manual testing validated
|
|
2326
|
+
|
|
2327
|
+
**Documentation:**
|
|
2328
|
+
|
|
2329
|
+
- Comprehensive user guide
|
|
2330
|
+
- Complete API reference
|
|
2331
|
+
- Architecture documentation
|
|
2332
|
+
- Integration guides
|
|
2333
|
+
- Code examples
|
|
2334
|
+
|
|
2335
|
+
### Known Issues
|
|
2336
|
+
|
|
2337
|
+
- Critic Markup substitutions have edge cases with certain
|
|
2338
|
+
|
|
2339
|
+
inputs
|
|
2340
|
+
|
|
2341
|
+
- Definition lists not yet implemented
|
|
2342
|
+
- Kramdown attributes not yet implemented
|
|
2343
|
+
- Inline footnotes not yet implemented
|
|
2344
|
+
|
|
2345
|
+
### Performance
|
|
2346
|
+
|
|
2347
|
+
- Small documents (< 10KB): < 10ms
|
|
2348
|
+
- Medium documents (< 100KB): < 100ms
|
|
2349
|
+
- Large documents (< 1MB): < 1s
|
|
2350
|
+
|
|
2351
|
+
### Credits
|
|
2352
|
+
|
|
2353
|
+
Based on [cmark-gfm](https://github.com/github/cmark-gfm) by GitHub
|
|
2354
|
+
|
|
2355
|
+
Developed for [Marked](https://marked2app.com) by Brett Terpstra
|
|
2356
|
+
|
|
2357
|
+
z
|
|
2358
|
+
|
|
2359
|
+
[0.1.73]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.73
|
|
2360
|
+
[0.1.72]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.72
|
|
2361
|
+
[0.1.71]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.71
|
|
2362
|
+
[0.1.70]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.70
|
|
2363
|
+
[0.1.69]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.69
|
|
2364
|
+
[0.1.68]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.68
|
|
2365
|
+
[0.1.67]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.67
|
|
2366
|
+
[0.1.66]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.66
|
|
2367
|
+
[0.1.65]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.65
|
|
2368
|
+
[0.1.64]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.64
|
|
2369
|
+
[0.1.63]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.63
|
|
2370
|
+
[0.1.62]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.62
|
|
2371
|
+
[0.1.61]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.61
|
|
2372
|
+
[0.1.60]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.60
|
|
2373
|
+
[0.1.59]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.59
|
|
2374
|
+
[0.1.58]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.58
|
|
2375
|
+
[0.1.57]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.57
|
|
2376
|
+
[0.1.56]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.56
|
|
2377
|
+
[0.1.55]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.55
|
|
2378
|
+
[0.1.54]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.54
|
|
2379
|
+
[0.1.53]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.53
|
|
2380
|
+
[0.1.52]: https://github.com/ttscoff/apex/releases/tag/v0.1.52
|
|
2381
|
+
[0.1.51]: https://github.com/ttscoff/apex/releases/tag/v0.1.51
|
|
2382
|
+
[0.1.50]: https://github.com/ttscoff/apex/releases/tag/v0.1.50
|
|
2383
|
+
[0.1.49]: https://github.com/ttscoff/apex/releases/tag/v0.1.49
|
|
2384
|
+
[0.1.48]: https://github.com/ttscoff/apex/releases/tag/v0.1.48
|
|
2385
|
+
[0.1.47]: https://github.com/ttscoff/apex/releases/tag/v0.1.47
|
|
2386
|
+
[0.1.46]: https://github.com/ttscoff/apex/releases/tag/v0.1.46
|
|
2387
|
+
[0.1.45]: https://github.com/ttscoff/apex/releases/tag/v0.1.45
|
|
2388
|
+
[0.1.44]: https://github.com/ttscoff/apex/releases/tag/v0.1.44
|
|
2389
|
+
[0.1.43]:
|
|
2390
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.43
|
|
2391
|
+
[0.1.42]:
|
|
2392
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.42
|
|
2393
|
+
[0.1.41]:
|
|
2394
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.41
|
|
2395
|
+
[0.1.40]:
|
|
2396
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.40
|
|
2397
|
+
[0.1.39]:
|
|
2398
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.39
|
|
2399
|
+
[0.1.38]:
|
|
2400
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.38
|
|
2401
|
+
[0.1.37]:
|
|
2402
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.37
|
|
2403
|
+
[0.1.36]:
|
|
2404
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.36
|
|
2405
|
+
[0.1.35]:
|
|
2406
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.35
|
|
2407
|
+
[0.1.34]:
|
|
2408
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.34
|
|
2409
|
+
[0.1.33]:
|
|
2410
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.33
|
|
2411
|
+
[0.1.32]:
|
|
2412
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.32
|
|
2413
|
+
[0.1.31]:
|
|
2414
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.31
|
|
2415
|
+
[0.1.30]:
|
|
2416
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.30
|
|
2417
|
+
[0.1.29]:
|
|
2418
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.29
|
|
2419
|
+
[0.1.28]:
|
|
2420
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.28
|
|
2421
|
+
[0.1.27]:
|
|
2422
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.27
|
|
2423
|
+
[0.1.26]:
|
|
2424
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.26
|
|
2425
|
+
[0.1.25]:
|
|
2426
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.25
|
|
2427
|
+
[0.1.24]:
|
|
2428
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.24
|
|
2429
|
+
[0.1.23]:
|
|
2430
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.23
|
|
2431
|
+
[0.1.20]:
|
|
2432
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.20
|
|
2433
|
+
[0.1.19]:
|
|
2434
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.19
|
|
2435
|
+
[0.1.18]:
|
|
2436
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.18
|
|
2437
|
+
[0.1.17]:
|
|
2438
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.17
|
|
2439
|
+
[0.1.16]:
|
|
2440
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.16
|
|
2441
|
+
[0.1.15]:
|
|
2442
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.15
|
|
2443
|
+
[0.1.10]:
|
|
2444
|
+
https://github.com/ttscoff/apex/releases/tag/v0.1.10
|
|
2445
|
+
[0.1.9]: https://github.com/ttscoff/apex/releases/tag/v0.1.9
|
|
2446
|
+
[0.1.8]: https://github.com/ttscoff/apex/releases/tag/v0.1.8
|
|
2447
|
+
[0.1.7]: https://github.com/ttscoff/apex/releases/tag/v0.1.7
|
|
2448
|
+
[0.1.6]: https://github.com/ttscoff/apex/releases/tag/v0.1.6
|
|
2449
|
+
[0.1.5]: https://github.com/ttscoff/apex/releases/tag/v0.1.5
|
|
2450
|
+
[0.1.4]: https://github.com/ttscoff/apex/releases/tag/v0.1.4
|
|
2451
|
+
[0.1.3]: https://github.com/ttscoff/apex/releases/tag/v0.1.3
|
|
2452
|
+
[0.1.2]: https://github.com/ttscoff/apex/releases/tag/v0.1.2
|
|
2453
|
+
[0.1.1]: https://github.com/ttscoff/apex/releases/tag/v0.1.1
|
|
2454
|
+
[0.1.0]: https://github.com/ttscoff/apex/releases/tag/v0.1.0
|