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,456 @@
|
|
|
1
|
+
# Apex - Future Features & Roadmap
|
|
2
|
+
|
|
3
|
+
**Last Updated**: December 15, 2025 (PM)
|
|
4
|
+
|
|
5
|
+
## Recently Completed ✅
|
|
6
|
+
|
|
7
|
+
### Tier 1 Features (All Complete!)
|
|
8
|
+
- [x] **Callouts** (Bear/Obsidian/Xcode) - All types with
|
|
9
|
+
|
|
10
|
+
collapsible support
|
|
11
|
+
|
|
12
|
+
- [x] **File Includes** - Marked's `<<[file]`, `<<(code)`,
|
|
13
|
+
|
|
14
|
+
`<<{html}` syntax with recursion protection
|
|
15
|
+
|
|
16
|
+
- [x] **TOC Generation** - HTML (`<!--TOC-->`), MMD
|
|
17
|
+
|
|
18
|
+
(`{{TOC}}`), and Kramdown `{:toc}` markers with `.no_toc`
|
|
19
|
+
exclusion
|
|
20
|
+
|
|
21
|
+
- [x] **Abbreviations** - Full `*[abbr]: definition` support
|
|
22
|
+
- [x] **GitHub Emoji** - Expanded to 350+ common emoji
|
|
23
|
+
- [x] **Page Breaks** - Both `<!--BREAK-->` and
|
|
24
|
+
|
|
25
|
+
`{::pagebreak /}`
|
|
26
|
+
|
|
27
|
+
- [x] **Autoscroll Pauses** - `<!--PAUSE:X-->` for
|
|
28
|
+
|
|
29
|
+
teleprompter
|
|
30
|
+
|
|
31
|
+
- [x] **End of Block Markers** - Kramdown's `^` separator
|
|
32
|
+
|
|
33
|
+
### Advanced Features (NEW - December 4, 2025)
|
|
34
|
+
- [x] **Kramdown IAL** - Full implementation with ALD
|
|
35
|
+
|
|
36
|
+
support, attribute injection in HTML
|
|
37
|
+
|
|
38
|
+
- [x] **Advanced Footnotes** - Block-level Markdown content
|
|
39
|
+
|
|
40
|
+
(paragraphs, code, lists)
|
|
41
|
+
|
|
42
|
+
- [x] **Advanced Tables** - Colspan, rowspan, and captions
|
|
43
|
+
|
|
44
|
+
(postprocessing approach)
|
|
45
|
+
|
|
46
|
+
- [ ] **Definition Lists** - Foundation complete, needs
|
|
47
|
+
|
|
48
|
+
parsing enhancement
|
|
49
|
+
|
|
50
|
+
## Features to Add
|
|
51
|
+
|
|
52
|
+
### File Transclusion (MMD Extended)
|
|
53
|
+
|
|
54
|
+
From: [MultiMarkdown 6 Transclusion Syntax](https://fletcher.github.io/MultiMarkdown-6/syntax/transclusion.html)
|
|
55
|
+
|
|
56
|
+
**Note:** Apex implements Marked's include syntax (`<<[file]`, `<<(code)`, `<<{html}`). MMD uses different syntax: `{{file}}`
|
|
57
|
+
|
|
58
|
+
**MultiMarkdown Transclusion Syntax:**
|
|
59
|
+
|
|
60
|
+
**Basic Transclusion:**
|
|
61
|
+
```markdown
|
|
62
|
+
{{some_other_file.txt}}
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Wildcard Extensions:**
|
|
67
|
+
```markdown
|
|
68
|
+
{{foo.*}} # Choose version based on output format (foo.html, foo.tex, etc.)
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Metadata Control:**
|
|
73
|
+
```markdown
|
|
74
|
+
transclude base: . # Relative to current file
|
|
75
|
+
transclude base: folder/ # In subfolder
|
|
76
|
+
transclude base: /absolute/path # Absolute path
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Features:**
|
|
81
|
+
|
|
82
|
+
- Recursive transclusion
|
|
83
|
+
- Metadata in transcluded files is ignored
|
|
84
|
+
- Search path based on parent file directory
|
|
85
|
+
- Can override with `transclude base` metadata
|
|
86
|
+
- Wildcard extensions choose format-appropriate version
|
|
87
|
+
|
|
88
|
+
**Current Status in Apex:**
|
|
89
|
+
|
|
90
|
+
- [x] Implements Marked's syntax: `<<[file.md]`, `<<(code)`,
|
|
91
|
+
|
|
92
|
+
`<<{html}`
|
|
93
|
+
|
|
94
|
+
- [x] Implements MMD syntax: `{{file}}` for MMD mode
|
|
95
|
+
|
|
96
|
+
compatibility
|
|
97
|
+
|
|
98
|
+
- [x] Wildcard support for transclusion:
|
|
99
|
+
|
|
100
|
+
`{{file.*}}` with preferred extensions (`.html`, `.md`, `.txt`, `.tex`)
|
|
101
|
+
|
|
102
|
+
General globbing for patterns like `{{*.md}}`, `{{c?de.py}}`, and `{{{intro,part1}.md}}`
|
|
103
|
+
|
|
104
|
+
- [x] `transclude base` metadata support
|
|
105
|
+
|
|
106
|
+
**Implementation Estimate:** 1-2 hours
|
|
107
|
+
**Complexity:** Medium (mostly extending existing includes
|
|
108
|
+
system)
|
|
109
|
+
|
|
110
|
+
### ~~Advanced Table Syntax~~ ✅ COMPLETE
|
|
111
|
+
|
|
112
|
+
**Status:** [x] Implemented (December 4, 2025)
|
|
113
|
+
|
|
114
|
+
**What's Working:**
|
|
115
|
+
|
|
116
|
+
- ✅ **Colspan** - Empty cells merge with previous cell
|
|
117
|
+
- ✅ **Colspan** - `<<` marker for explicit spanning
|
|
118
|
+
- ✅ **Rowspan** - `^^` marker merges with cell above
|
|
119
|
+
|
|
120
|
+
✅ **Table Captions** - `[Caption]` format before/after table
|
|
121
|
+
|
|
122
|
+
- ✅ **Backward Compatible** - All existing tables work
|
|
123
|
+
|
|
124
|
+
perfectly
|
|
125
|
+
|
|
126
|
+
**Examples:**
|
|
127
|
+
```markdown
|
|
128
|
+
| Header 1 | Header 2 | Header 3 |
|
|
129
|
+
| --------- | -------- | -------- |
|
|
130
|
+
| Wide cell | | Normal | # colspan with empty cells |
|
|
131
|
+
| Row 1 | Data A | Data X |
|
|
132
|
+
| ^^ | Data B | Data Y | # rowspan with ^^ |
|
|
133
|
+
|
|
134
|
+
[Table 1: Sales Data] # caption
|
|
135
|
+
|
|
136
|
+
| Quarter | Revenue |
|
|
137
|
+
| ------- | ------- |
|
|
138
|
+
| Q1 | $100k |
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Implementation:** Postprocessing extension that detects
|
|
143
|
+
span patterns and captions without modifying the core table
|
|
144
|
+
parser.
|
|
145
|
+
|
|
146
|
+
**Future Enhancements (Optional):**
|
|
147
|
+
|
|
148
|
+
- Multi-line cells with `\\` in header
|
|
149
|
+
- Cell background colors via attributes
|
|
150
|
+
- More complex table layouts
|
|
151
|
+
|
|
152
|
+
### Complete GitHub Emoji Support
|
|
153
|
+
|
|
154
|
+
From: https://gist.github.com/rxaviers/7360908
|
|
155
|
+
|
|
156
|
+
**Current:** 350+ common emoji ✅
|
|
157
|
+
**Target:** 1,800+ complete GitHub emoji set (optional
|
|
158
|
+
expansion)
|
|
159
|
+
|
|
160
|
+
**Popular Categories:**
|
|
161
|
+
|
|
162
|
+
**Smileys & Emotion:** :smile:, :heart:, :joy:, :cry:, etc.
|
|
163
|
+
|
|
164
|
+
- **People & Body:** :thumbsup:, :wave:, :clap:, :muscle:,
|
|
165
|
+
|
|
166
|
+
etc.
|
|
167
|
+
|
|
168
|
+
- **Animals & Nature:** :dog:, :cat:, :tree:, :sun:, etc.
|
|
169
|
+
- **Food & Drink:** :pizza:, :coffee:, :beer:, :cake:, etc.
|
|
170
|
+
- **Travel & Places:** :car:, :airplane:, :house:,
|
|
171
|
+
|
|
172
|
+
:flag-us:, etc.
|
|
173
|
+
|
|
174
|
+
- **Activities:** :soccer:, :basketball:, :guitar:, :art:,
|
|
175
|
+
|
|
176
|
+
etc.
|
|
177
|
+
|
|
178
|
+
- **Objects:** :phone:, :computer:, :book:, :gift:, etc.
|
|
179
|
+
- **Symbols:** :heart:, :star:, :check:, :cross:, etc.
|
|
180
|
+
- **Flags:** :flag-us:, :flag-gb:, :flag-jp:, etc.
|
|
181
|
+
|
|
182
|
+
**Implementation Approaches:**
|
|
183
|
+
|
|
184
|
+
**Option A: Static Map** (Simplest)
|
|
185
|
+
|
|
186
|
+
- Include all 1,800+ emoji in C array
|
|
187
|
+
- ~100KB of emoji data
|
|
188
|
+
- No external dependencies
|
|
189
|
+
- Fast lookup
|
|
190
|
+
- **Estimate:** 2-3 hours (mostly data entry)
|
|
191
|
+
|
|
192
|
+
**Option B: JSON Database** (Flexible)
|
|
193
|
+
|
|
194
|
+
- Load emoji from JSON file
|
|
195
|
+
- Easier to update
|
|
196
|
+
- Smaller binary
|
|
197
|
+
- **Estimate:** 3-4 hours
|
|
198
|
+
|
|
199
|
+
**Option C: External API** (Not recommended)
|
|
200
|
+
|
|
201
|
+
- Query GitHub API
|
|
202
|
+
- Requires network
|
|
203
|
+
- Slow
|
|
204
|
+
- Not practical for Apex
|
|
205
|
+
|
|
206
|
+
**Recommendation:** Option A (static map)
|
|
207
|
+
|
|
208
|
+
### Definition Lists (Foundation Complete)
|
|
209
|
+
|
|
210
|
+
**Status:** [ ] Foundation implemented, needs parsing
|
|
211
|
+
enhancement
|
|
212
|
+
|
|
213
|
+
Kramdown/PHP Markdown Extra definition lists:
|
|
214
|
+
|
|
215
|
+
```markdown
|
|
216
|
+
Term 1
|
|
217
|
+
: Definition 1a
|
|
218
|
+
: Definition 1b
|
|
219
|
+
|
|
220
|
+
Term 2
|
|
221
|
+
: Definition 2
|
|
222
|
+
With multiple paragraphs
|
|
223
|
+
|
|
224
|
+
And code blocks
|
|
225
|
+
|
|
226
|
+
code here
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**What's Complete:**
|
|
231
|
+
|
|
232
|
+
- [x] Extension structure created
|
|
233
|
+
- [x] Node types registered (`<dl>`, `<dt>`, `<dd>`)
|
|
234
|
+
- [x] HTML rendering implemented
|
|
235
|
+
- [x] Block containment support
|
|
236
|
+
|
|
237
|
+
**What's Needed:**
|
|
238
|
+
|
|
239
|
+
- [ ] Parsing logic to detect `:` lines
|
|
240
|
+
- [ ] Convert paragraphs + definitions to proper structure
|
|
241
|
+
- [ ] Block-level content parsing in definitions
|
|
242
|
+
|
|
243
|
+
**Implementation Estimate:** 1-2 hours (for completion)
|
|
244
|
+
**Complexity:** Medium (parsing logic)
|
|
245
|
+
|
|
246
|
+
### ~~Kramdown IAL (Full Implementation)~~ ✅ COMPLETE
|
|
247
|
+
|
|
248
|
+
**Status:** ✅ Fully implemented (December 4, 2025)
|
|
249
|
+
|
|
250
|
+
**What's Working:**
|
|
251
|
+
|
|
252
|
+
**Block IAL:**
|
|
253
|
+
```markdown
|
|
254
|
+
## Header
|
|
255
|
+
{: #custom-id .class1 .class2 key="value"}
|
|
256
|
+
|
|
257
|
+
Paragraph with attributes.
|
|
258
|
+
{: .special}
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Output:**
|
|
263
|
+
```html
|
|
264
|
+
<h1 id="custom-id" class="class1 class2" key="value">Header</h1>
|
|
265
|
+
<p class="special">Paragraph with attributes.</p>
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Attribute List Definitions (ALD):**
|
|
270
|
+
```markdown
|
|
271
|
+
{:ref: #id .class key="value"}
|
|
272
|
+
|
|
273
|
+
## Header
|
|
274
|
+
{: ref}
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Features Complete:**
|
|
279
|
+
|
|
280
|
+
- ✅ Parse `{: attributes}` syntax
|
|
281
|
+
- ✅ Parse `{:name: attributes}` ALD definitions
|
|
282
|
+
- ✅ Store and resolve ALD references
|
|
283
|
+
- ✅ Attach attributes to block elements (headers,
|
|
284
|
+
|
|
285
|
+
paragraphs, blockquotes)
|
|
286
|
+
|
|
287
|
+
- ✅ Complex attribute parsing (ID, classes, key-value pairs)
|
|
288
|
+
- ✅ Custom HTML renderer injects attributes
|
|
289
|
+
- ✅ IAL paragraphs removed from output
|
|
290
|
+
|
|
291
|
+
**Future Enhancement:**
|
|
292
|
+
|
|
293
|
+
- Span-level IAL: `*text*{:.class}` (lower priority)
|
|
294
|
+
|
|
295
|
+
### HTML Markdown Attributes
|
|
296
|
+
|
|
297
|
+
Parse markdown inside HTML based on `markdown` attribute:
|
|
298
|
+
|
|
299
|
+
```html
|
|
300
|
+
<div markdown="1">
|
|
301
|
+
## This markdown is parsed
|
|
302
|
+
</div>
|
|
303
|
+
|
|
304
|
+
<span markdown="span">*emphasis* works</span>
|
|
305
|
+
|
|
306
|
+
<div markdown="0">
|
|
307
|
+
## This is literal, not parsed
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Requirements:**
|
|
313
|
+
|
|
314
|
+
- Parse HTML tags during preprocessing
|
|
315
|
+
- Check for `markdown` attribute
|
|
316
|
+
- Selectively enable/disable markdown parsing
|
|
317
|
+
- Handle block vs. span contexts
|
|
318
|
+
- Complex interaction with HTML parser
|
|
319
|
+
|
|
320
|
+
**Implementation Estimate:** 3-4 hours
|
|
321
|
+
**Complexity:** High
|
|
322
|
+
|
|
323
|
+
### ~~Advanced Footnote Features~~ ✅ COMPLETE
|
|
324
|
+
|
|
325
|
+
**Status:** ✅ Fully implemented (December 4, 2025)
|
|
326
|
+
|
|
327
|
+
**Block-level content in footnotes:**
|
|
328
|
+
```markdown
|
|
329
|
+
[^1]: Simple footnote.
|
|
330
|
+
|
|
331
|
+
[^complex]: Footnote with multiple paragraphs.
|
|
332
|
+
|
|
333
|
+
Second paragraph with more details.
|
|
334
|
+
|
|
335
|
+
```python
|
|
336
|
+
|
|
337
|
+
def example():
|
|
338
|
+
return "code in footnote"
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
- List item one
|
|
342
|
+
- List item two
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Features Complete:**
|
|
347
|
+
|
|
348
|
+
- [x] Detects block-level content patterns (blank lines,
|
|
349
|
+
|
|
350
|
+
indentation)
|
|
351
|
+
|
|
352
|
+
- [x] Re-parses footnote definitions as full Markdown blocks
|
|
353
|
+
- [x] Supports multiple paragraphs
|
|
354
|
+
- [x] Supports code blocks (fenced and indented)
|
|
355
|
+
- [x] Supports lists, blockquotes, and other block elements
|
|
356
|
+
|
|
357
|
+
[x] Postprocessing approach (no parser modification needed)
|
|
358
|
+
|
|
359
|
+
- [x] Maintains compatibility with simple footnotes
|
|
360
|
+
|
|
361
|
+
**Implementation:** Advanced footnotes extension with
|
|
362
|
+
postprocessing to enhance cmark-gfm's footnote system.
|
|
363
|
+
|
|
364
|
+
### ~~Page Breaks & Special Markers~~ ✅ COMPLETE
|
|
365
|
+
|
|
366
|
+
**Status:** ✅ Implemented
|
|
367
|
+
|
|
368
|
+
**Page Breaks:**
|
|
369
|
+
```markdown
|
|
370
|
+
<!--BREAK--> # [x] Working
|
|
371
|
+
{::pagebreak /} # [x] Working
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**Autoscroll Pauses:**
|
|
376
|
+
```markdown
|
|
377
|
+
<!--PAUSE:5--> # [x] Working
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
Outputs proper HTML with classes and inline styles for
|
|
382
|
+
print/PDF compatibility.
|
|
383
|
+
|
|
384
|
+
### ~~End of Block Marker~~ ✅ COMPLETE
|
|
385
|
+
|
|
386
|
+
**Status:** ✅ Implemented
|
|
387
|
+
|
|
388
|
+
Kramdown's block separator:
|
|
389
|
+
|
|
390
|
+
```markdown
|
|
391
|
+
* list one
|
|
392
|
+
^
|
|
393
|
+
* list two
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Forces separate lists instead of continuation.
|
|
398
|
+
|
|
399
|
+
**Implementation:** Part of special_markers extension,
|
|
400
|
+
processes `^` character as block separator.
|
|
401
|
+
|
|
402
|
+
### Pygments Syntax Highlighting
|
|
403
|
+
|
|
404
|
+
Server-side syntax highlighting using Pygments:
|
|
405
|
+
|
|
406
|
+
**Requirements:**
|
|
407
|
+
|
|
408
|
+
- Python Pygments dependency
|
|
409
|
+
- Shell out to Pygments
|
|
410
|
+
- Cache results
|
|
411
|
+
- Handle multiple languages
|
|
412
|
+
- Error handling
|
|
413
|
+
|
|
414
|
+
**Alternative:** client-side (Prism.js, highlight.js)
|
|
415
|
+
|
|
416
|
+
**Implementation Estimate:** 4-6 hours
|
|
417
|
+
**Complexity:** High (external dependency)
|
|
418
|
+
|
|
419
|
+
## Implementation Priority Recommendations
|
|
420
|
+
|
|
421
|
+
### Tier 1: High Value, Easy (< 2 hours each) - ✅ ALL COMPLETE!
|
|
422
|
+
1. [x] **Callouts** - COMPLETE
|
|
423
|
+
2. [x] **File Includes** - COMPLETE
|
|
424
|
+
3. [x] **TOC Generation** - COMPLETE
|
|
425
|
+
4. [x] **Abbreviations** - COMPLETE
|
|
426
|
+
5. [x] **GitHub Emoji** - COMPLETE (350+ emoji)
|
|
427
|
+
6. [x] **Page Breaks & Pauses** - COMPLETE
|
|
428
|
+
7. [x] **End of Block Markers** - COMPLETE
|
|
429
|
+
|
|
430
|
+
### Tier 2: High Value, Medium Effort (2-4 hours each)
|
|
431
|
+
1. **Expand GitHub Emoji** to full 1,800+ set (currently
|
|
432
|
+
|
|
433
|
+
350+) - Optional
|
|
434
|
+
|
|
435
|
+
2. [ ] **Definition Lists** (foundation complete, needs
|
|
436
|
+
|
|
437
|
+
parsing)
|
|
438
|
+
|
|
439
|
+
3. **MMD File Transclusion** ({{file}} syntax, wildcards,
|
|
440
|
+
|
|
441
|
+
ranges) - Future
|
|
442
|
+
|
|
443
|
+
### Tier 3: Complex Features
|
|
444
|
+
1. [x] **Advanced Table Syntax** - COMPLETE (rowspan,
|
|
445
|
+
|
|
446
|
+
colspan, captions)
|
|
447
|
+
|
|
448
|
+
2. [x] **Full Kramdown IAL with ALD** - COMPLETE
|
|
449
|
+
|
|
450
|
+
[x] **Advanced Footnotes** - COMPLETE (block-level content)
|
|
451
|
+
|
|
452
|
+
[ ] **HTML Markdown Attributes** - Future (lower priority)
|
|
453
|
+
|
|
454
|
+
5. [ ] **Pygments Integration** - Probably stick with
|
|
455
|
+
|
|
456
|
+
client-side highlighting
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Inline Attribute Lists (IALs) and Attribute List Definitions (ALDs)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Apex supports Kramdown-style Inline Attribute Lists (IALs)
|
|
6
|
+
and Attribute List Definitions (ALDs), allowing you to add
|
|
7
|
+
HTML attributes to Markdown elements. This feature is
|
|
8
|
+
available in **Kramdown** and **unified** modes.
|
|
9
|
+
|
|
10
|
+
## Implementation Status
|
|
11
|
+
|
|
12
|
+
✅ **Fully Implemented**
|
|
13
|
+
|
|
14
|
+
### Block-Level IALs
|
|
15
|
+
- ✅ Headings (on same line or next line)
|
|
16
|
+
- ✅ Paragraphs
|
|
17
|
+
- ✅ Lists (ordered and unordered)
|
|
18
|
+
- ✅ Blockquotes
|
|
19
|
+
- ✅ Code blocks
|
|
20
|
+
- ✅ Tables
|
|
21
|
+
|
|
22
|
+
### Inline IALs
|
|
23
|
+
- ✅ Links
|
|
24
|
+
- ✅ Images
|
|
25
|
+
- ✅ Strong (bold) elements
|
|
26
|
+
- ✅ Emphasis (italic) elements
|
|
27
|
+
- ✅ Code spans
|
|
28
|
+
- ✅ Nested inline elements
|
|
29
|
+
|
|
30
|
+
### Attribute Types
|
|
31
|
+
- ✅ IDs (`#id`)
|
|
32
|
+
- ✅ Classes (`.class`, multiple classes supported)
|
|
33
|
+
- ✅ Key-value pairs (`key="value"` or `key='value'` or
|
|
34
|
+
|
|
35
|
+
`key=value`)
|
|
36
|
+
|
|
37
|
+
- ✅ Quoted and unquoted values
|
|
38
|
+
- ✅ Escaped quotes in quoted values
|
|
39
|
+
|
|
40
|
+
### ALDs (Attribute List Definitions)
|
|
41
|
+
- ✅ ALD definition syntax (`{:ref-name: attributes}`)
|
|
42
|
+
- ✅ ALD reference syntax (`{:ref-name}`)
|
|
43
|
+
- ✅ Multiple references to same ALD
|
|
44
|
+
- ✅ ALD extraction and lookup
|
|
45
|
+
|
|
46
|
+
## Syntax Details
|
|
47
|
+
|
|
48
|
+
### Block-Level IALs
|
|
49
|
+
|
|
50
|
+
For block-level elements, IALs must appear immediately after
|
|
51
|
+
the element (no blank line):
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
Paragraph text.
|
|
55
|
+
{: #para-id .class1 .class2 title="Title" lang="en"}
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Inline IALs
|
|
60
|
+
|
|
61
|
+
For inline elements, IALs appear immediately after the
|
|
62
|
+
element:
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
[link](url){:.button title="Link Title"}
|
|
66
|
+
**bold**{:.bold-style}
|
|
67
|
+
*italic*{:.italic-style}
|
|
68
|
+
`code`{:.code-class}
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Key-Value Pairs
|
|
73
|
+
|
|
74
|
+
Supports three formats:
|
|
75
|
+
|
|
76
|
+
- `key="value"` (double quotes)
|
|
77
|
+
- `key='value'` (single quotes)
|
|
78
|
+
- `key=value` (unquoted, no spaces)
|
|
79
|
+
|
|
80
|
+
Examples:
|
|
81
|
+
```markdown
|
|
82
|
+
{: title="Important Note" lang="en" data-id="123"}
|
|
83
|
+
{: title='Single Quotes' lang=en data-visible=true}
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### ALDs
|
|
88
|
+
|
|
89
|
+
Define once, reference multiple times:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Header 1
|
|
93
|
+
{:my-style}
|
|
94
|
+
|
|
95
|
+
# Header 2
|
|
96
|
+
{:my-style}
|
|
97
|
+
|
|
98
|
+
{:my-style: #section-title .important .highlight lang="en"}
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Technical Implementation
|
|
103
|
+
|
|
104
|
+
### File: `src/extensions/ial.c`
|
|
105
|
+
|
|
106
|
+
**Key Functions:**
|
|
107
|
+
|
|
108
|
+
- `parse_ial_content()` - Parses IAL/ALD attribute strings
|
|
109
|
+
- `apex_extract_alds()` - Extracts ALD definitions from text
|
|
110
|
+
- `apex_process_ial_in_tree()` - Processes IALs in AST
|
|
111
|
+
|
|
112
|
+
`process_span_ial_in_container()` - Recursive function for inline IALs
|
|
113
|
+
|
|
114
|
+
- `find_ald()` - Looks up ALD references
|
|
115
|
+
- `merge_attributes()` - Merges ALD attributes
|
|
116
|
+
|
|
117
|
+
`attributes_to_html()` - Converts attributes to HTML string
|
|
118
|
+
|
|
119
|
+
**Key Structures:**
|
|
120
|
+
|
|
121
|
+
`apex_attributes` - Stores ID, classes, and key-value pairs
|
|
122
|
+
|
|
123
|
+
- `ald_entry` - Linked list of ALD definitions
|
|
124
|
+
|
|
125
|
+
### Element Matching
|
|
126
|
+
|
|
127
|
+
The HTML renderer uses element indexing to correctly match
|
|
128
|
+
attributes to elements, especially when multiple elements
|
|
129
|
+
share the same fingerprint (e.g., same URL for links, same
|
|
130
|
+
text for strong/emph elements).
|
|
131
|
+
|
|
132
|
+
Separate counters are maintained for:
|
|
133
|
+
|
|
134
|
+
- Links (`link_count`)
|
|
135
|
+
- Images (`image_count`)
|
|
136
|
+
- Strong (`strong_count`)
|
|
137
|
+
- Emphasis (`emph_count`)
|
|
138
|
+
- Code spans (`code_inline_count`)
|
|
139
|
+
|
|
140
|
+
This ensures that when multiple links share the same URL,
|
|
141
|
+
each one receives the correct attributes based on its
|
|
142
|
+
position in the document.
|
|
143
|
+
|
|
144
|
+
### Processing Order
|
|
145
|
+
|
|
146
|
+
1. **Preprocessing**: ALDs are extracted from the text
|
|
147
|
+
|
|
148
|
+
before parsing
|
|
149
|
+
|
|
150
|
+
2. **Parsing**: Markdown is parsed into AST by cmark-gfm
|
|
151
|
+
3. **Postprocessing**: IALs are processed and attributes
|
|
152
|
+
|
|
153
|
+
attached to AST nodes
|
|
154
|
+
|
|
155
|
+
4. **Rendering**: HTML is rendered with attributes injected
|
|
156
|
+
|
|
157
|
+
into tags
|
|
158
|
+
|
|
159
|
+
### Recursive Processing
|
|
160
|
+
|
|
161
|
+
Inline IALs are processed recursively to handle nested
|
|
162
|
+
elements:
|
|
163
|
+
|
|
164
|
+
- Paragraphs are processed first
|
|
165
|
+
|
|
166
|
+
Then STRONG, EMPH, and LINK nodes are processed recursively
|
|
167
|
+
|
|
168
|
+
This allows IALs to work with nested structures like `**bold with *italic*{:.nested} inside**{:.wrapper}`
|
|
169
|
+
|
|
170
|
+
## Edge Cases Handled
|
|
171
|
+
|
|
172
|
+
1. **Multiple elements with same URL/content**: Uses element
|
|
173
|
+
|
|
174
|
+
indexing to match correctly
|
|
175
|
+
|
|
176
|
+
2. **Nested inline elements**: Recursive processing ensures
|
|
177
|
+
|
|
178
|
+
correct matching
|
|
179
|
+
|
|
180
|
+
3. **Text after inline IAL**: IAL text is removed, following
|
|
181
|
+
|
|
182
|
+
text is preserved
|
|
183
|
+
|
|
184
|
+
4. **Block-level spacing**: Proper space injection between
|
|
185
|
+
|
|
186
|
+
tag name and attributes
|
|
187
|
+
|
|
188
|
+
5. **ALD references**: Simple word references (no `#`, `.`,
|
|
189
|
+
|
|
190
|
+
or `=`) are looked up as ALDs
|
|
191
|
+
|
|
192
|
+
## Testing
|
|
193
|
+
|
|
194
|
+
Comprehensive test coverage in `tests/test_runner.c`:
|
|
195
|
+
|
|
196
|
+
Block-level IALs (headings, paragraphs, lists, blockquotes)
|
|
197
|
+
|
|
198
|
+
- Inline IALs (links, images, strong, emphasis, code)
|
|
199
|
+
- Key-value pairs
|
|
200
|
+
- ALD definitions and references
|
|
201
|
+
- Multiple IALs in same paragraph
|
|
202
|
+
- Nested inline elements
|
|
203
|
+
- Edge cases (whitespace, end of paragraph, etc.)
|
|
204
|
+
|
|
205
|
+
## References
|
|
206
|
+
|
|
207
|
+
[Maruku IAL Proposal](https://golem.ph.utexas.edu/~distler/maruku/proposal.html)
|
|
208
|
+
|
|
209
|
+
[Kramdown IAL Documentation](https://kramdown.gettalong.org/syntax.html#block-ials)
|
|
210
|
+
|