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,22 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Debug script for apex_test_runner
|
|
3
|
+
|
|
4
|
+
echo "=== Running apex_test_runner in lldb ==="
|
|
5
|
+
echo ""
|
|
6
|
+
echo "Commands will be:"
|
|
7
|
+
echo " (lldb) run"
|
|
8
|
+
echo " (lldb) bt # when it crashes, this shows the stack trace"
|
|
9
|
+
echo " (lldb) frame select 0 # select the top frame"
|
|
10
|
+
echo " (lldb) print *write # print variables"
|
|
11
|
+
echo ""
|
|
12
|
+
|
|
13
|
+
cd "$(dirname "$0")"
|
|
14
|
+
lldb build/apex_test_runner <<EOF
|
|
15
|
+
run
|
|
16
|
+
bt
|
|
17
|
+
frame select 0
|
|
18
|
+
print remaining
|
|
19
|
+
print write
|
|
20
|
+
print output
|
|
21
|
+
quit
|
|
22
|
+
EOF
|
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
# Apex API Reference
|
|
2
|
+
|
|
3
|
+
**Version 0.1.0**
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Apex provides a simple C API for converting Markdown to HTML
|
|
8
|
+
with various processor modes and options.
|
|
9
|
+
|
|
10
|
+
## Core Types
|
|
11
|
+
|
|
12
|
+
### apex_mode_t
|
|
13
|
+
|
|
14
|
+
Processor compatibility modes:
|
|
15
|
+
|
|
16
|
+
```c
|
|
17
|
+
typedef enum {
|
|
18
|
+
APEX_MODE_COMMONMARK = 0, /* Pure CommonMark */
|
|
19
|
+
APEX_MODE_GFM = 1, /* GitHub Flavored Markdown */
|
|
20
|
+
APEX_MODE_MULTIMARKDOWN = 2, /* MultiMarkdown */
|
|
21
|
+
APEX_MODE_KRAMDOWN = 3, /* Kramdown */
|
|
22
|
+
APEX_MODE_UNIFIED = 4 /* All features */
|
|
23
|
+
} apex_mode_t;
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### apex_options
|
|
28
|
+
|
|
29
|
+
Configuration structure:
|
|
30
|
+
|
|
31
|
+
```c
|
|
32
|
+
typedef struct {
|
|
33
|
+
apex_mode_t mode;
|
|
34
|
+
|
|
35
|
+
/* Feature flags */
|
|
36
|
+
bool enable_tables;
|
|
37
|
+
bool enable_footnotes;
|
|
38
|
+
bool enable_definition_lists;
|
|
39
|
+
bool enable_smart_typography;
|
|
40
|
+
bool enable_math;
|
|
41
|
+
bool enable_critic_markup;
|
|
42
|
+
bool enable_wiki_links;
|
|
43
|
+
bool enable_task_lists;
|
|
44
|
+
bool enable_attributes;
|
|
45
|
+
bool enable_callouts;
|
|
46
|
+
bool enable_marked_extensions;
|
|
47
|
+
|
|
48
|
+
/* Metadata */
|
|
49
|
+
bool strip_metadata;
|
|
50
|
+
bool enable_metadata_variables;
|
|
51
|
+
|
|
52
|
+
/* File inclusion */
|
|
53
|
+
bool enable_file_includes;
|
|
54
|
+
int max_include_depth;
|
|
55
|
+
const char *base_directory;
|
|
56
|
+
|
|
57
|
+
/* Output options */
|
|
58
|
+
bool unsafe;
|
|
59
|
+
bool validate_utf8;
|
|
60
|
+
bool github_pre_lang;
|
|
61
|
+
|
|
62
|
+
/* Line breaks */
|
|
63
|
+
bool hardbreaks;
|
|
64
|
+
bool nobreaks;
|
|
65
|
+
|
|
66
|
+
/* Header ID generation */
|
|
67
|
+
bool generate_header_ids;
|
|
68
|
+
bool header_anchors;
|
|
69
|
+
int id_format;
|
|
70
|
+
|
|
71
|
+
/* Table options */
|
|
72
|
+
bool relaxed_tables;
|
|
73
|
+
|
|
74
|
+
/* List options */
|
|
75
|
+
bool allow_mixed_list_markers; /* Allow mixed list markers at same level (inherit type from first item) */
|
|
76
|
+
bool allow_alpha_lists; /* Support alpha list markers (a., b., c. and A., B., C.) */
|
|
77
|
+
} apex_options;
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Core Functions
|
|
82
|
+
|
|
83
|
+
### apex_options_default
|
|
84
|
+
|
|
85
|
+
Get default options with all features enabled (unified
|
|
86
|
+
mode).
|
|
87
|
+
|
|
88
|
+
```c
|
|
89
|
+
apex_options apex_options_default(void);
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Returns**: Default options structure
|
|
94
|
+
|
|
95
|
+
**Example**:
|
|
96
|
+
```c
|
|
97
|
+
apex_options opts = apex_options_default();
|
|
98
|
+
opts.enable_math = true;
|
|
99
|
+
opts.enable_wiki_links = true;
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### apex_options_for_mode
|
|
104
|
+
|
|
105
|
+
Get options configured for a specific processor mode.
|
|
106
|
+
|
|
107
|
+
```c
|
|
108
|
+
apex_options apex_options_for_mode(apex_mode_t mode);
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Parameters**:
|
|
113
|
+
|
|
114
|
+
- `mode`: Desired processor mode
|
|
115
|
+
|
|
116
|
+
**Returns**: Options configured for the specified mode
|
|
117
|
+
|
|
118
|
+
**Example**:
|
|
119
|
+
```c
|
|
120
|
+
apex_options gfm_opts = apex_options_for_mode(APEX_MODE_GFM);
|
|
121
|
+
apex_options mmd_opts = apex_options_for_mode(APEX_MODE_MULTIMARKDOWN);
|
|
122
|
+
apex_options unified_opts = apex_options_for_mode(APEX_MODE_UNIFIED);
|
|
123
|
+
// Unified mode has mixed list markers and alpha lists enabled by default
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### apex_markdown_to_html
|
|
128
|
+
|
|
129
|
+
Main conversion function - converts Markdown to HTML.
|
|
130
|
+
|
|
131
|
+
```c
|
|
132
|
+
char *apex_markdown_to_html(const char *markdown, size_t len,
|
|
133
|
+
const apex_options *options);
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Parameters**:
|
|
138
|
+
|
|
139
|
+
- `markdown`: Input Markdown text (UTF-8)
|
|
140
|
+
- `len`: Length of input text
|
|
141
|
+
- `options`: Processing options (NULL for defaults)
|
|
142
|
+
|
|
143
|
+
**Returns**: Newly allocated HTML string (must be freed with
|
|
144
|
+
`apex_free_string`)
|
|
145
|
+
|
|
146
|
+
**Example**:
|
|
147
|
+
```c
|
|
148
|
+
const char *markdown = "# Hello\n\nThis is **bold**.";
|
|
149
|
+
apex_options opts = apex_options_default();
|
|
150
|
+
char *html = apex_markdown_to_html(markdown, strlen(markdown), &opts);
|
|
151
|
+
|
|
152
|
+
if (html) {
|
|
153
|
+
printf("%s\n", html);
|
|
154
|
+
apex_free_string(html);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### apex_free_string
|
|
160
|
+
|
|
161
|
+
Free a string allocated by Apex.
|
|
162
|
+
|
|
163
|
+
```c
|
|
164
|
+
void apex_free_string(char *str);
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Parameters**:
|
|
169
|
+
|
|
170
|
+
- `str`: String to free (can be NULL)
|
|
171
|
+
|
|
172
|
+
**Example**:
|
|
173
|
+
```c
|
|
174
|
+
char *html = apex_markdown_to_html(markdown, len, NULL);
|
|
175
|
+
// Use html...
|
|
176
|
+
apex_free_string(html);
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### apex_version_string
|
|
181
|
+
|
|
182
|
+
Get version string.
|
|
183
|
+
|
|
184
|
+
```c
|
|
185
|
+
const char *apex_version_string(void);
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Returns**: Version string (e.g., "0.1.0")
|
|
190
|
+
|
|
191
|
+
### apex_version_major / apex_version_minor / apex_version_patch
|
|
192
|
+
|
|
193
|
+
Get individual version components.
|
|
194
|
+
|
|
195
|
+
```c
|
|
196
|
+
int apex_version_major(void);
|
|
197
|
+
int apex_version_minor(void);
|
|
198
|
+
int apex_version_patch(void);
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Returns**: Version component as integer
|
|
203
|
+
|
|
204
|
+
## Extension Functions
|
|
205
|
+
|
|
206
|
+
### Metadata
|
|
207
|
+
|
|
208
|
+
```c
|
|
209
|
+
#include "extensions/metadata.h"
|
|
210
|
+
|
|
211
|
+
// Extract metadata from text (preprocessing)
|
|
212
|
+
apex_metadata_item *apex_extract_metadata(char **text_ptr);
|
|
213
|
+
|
|
214
|
+
// Get specific metadata value
|
|
215
|
+
const char *apex_metadata_get(apex_metadata_item *metadata, const char *key);
|
|
216
|
+
|
|
217
|
+
// Replace [%key] variables
|
|
218
|
+
char *apex_metadata_replace_variables(const char *text, apex_metadata_item *metadata);
|
|
219
|
+
|
|
220
|
+
// Free metadata
|
|
221
|
+
void apex_free_metadata(apex_metadata_item *metadata);
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Wiki Links
|
|
226
|
+
|
|
227
|
+
```c
|
|
228
|
+
#include "extensions/wiki_links.h"
|
|
229
|
+
|
|
230
|
+
// Process wiki links in AST
|
|
231
|
+
void apex_process_wiki_links_in_tree(cmark_node *document, wiki_link_config *config);
|
|
232
|
+
|
|
233
|
+
// Configure wiki link behavior
|
|
234
|
+
wiki_link_config config = {
|
|
235
|
+
.base_path = "/wiki/",
|
|
236
|
+
.extension = ".html",
|
|
237
|
+
.space_mode = WIKILINK_SPACE_DASH, // Options: WIKILINK_SPACE_DASH, WIKILINK_SPACE_NONE, WIKILINK_SPACE_UNDERSCORE, WIKILINK_SPACE_SPACE
|
|
238
|
+
.sanitize = true // Lowercase, remove apostrophes, clean non-alphanumeric chars
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Critic Markup
|
|
244
|
+
|
|
245
|
+
```c
|
|
246
|
+
#include "extensions/critic.h"
|
|
247
|
+
|
|
248
|
+
// Process critic markup
|
|
249
|
+
void apex_process_critic_markup_in_tree(cmark_node *document, critic_mode_t mode);
|
|
250
|
+
|
|
251
|
+
// Or preprocessing approach
|
|
252
|
+
char *apex_process_critic_markup_text(const char *text, critic_mode_t mode);
|
|
253
|
+
|
|
254
|
+
// Modes: CRITIC_ACCEPT, CRITIC_REJECT, CRITIC_MARKUP
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## List Options
|
|
259
|
+
|
|
260
|
+
### Mixed List Markers
|
|
261
|
+
|
|
262
|
+
When `allow_mixed_list_markers` is enabled, lists with different marker types at the same indentation level will inherit the type from the first item. This is enabled by default in **MultiMarkdown** and **Unified** modes.
|
|
263
|
+
|
|
264
|
+
```c
|
|
265
|
+
apex_options opts = apex_options_for_mode(APEX_MODE_UNIFIED);
|
|
266
|
+
// opts.allow_mixed_list_markers is true by default
|
|
267
|
+
|
|
268
|
+
// To enable in other modes:
|
|
269
|
+
opts.allow_mixed_list_markers = true;
|
|
270
|
+
|
|
271
|
+
// To disable in unified/multimarkdown modes:
|
|
272
|
+
opts.allow_mixed_list_markers = false;
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Example markdown:**
|
|
277
|
+
```markdown
|
|
278
|
+
1. First numbered item
|
|
279
|
+
* Second item (becomes numbered)
|
|
280
|
+
* Third item (becomes numbered)
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Alpha Lists
|
|
285
|
+
|
|
286
|
+
When `allow_alpha_lists` is enabled, alphabetic markers (`a.`, `b.`, `c.` for lower-alpha and `A.`, `B.`, `C.` for upper-alpha) are converted to HTML lists with appropriate `list-style-type` CSS. This is enabled by default in **Unified** mode only.
|
|
287
|
+
|
|
288
|
+
```c
|
|
289
|
+
apex_options opts = apex_options_for_mode(APEX_MODE_UNIFIED);
|
|
290
|
+
// opts.allow_alpha_lists is true by default
|
|
291
|
+
|
|
292
|
+
// To enable in other modes:
|
|
293
|
+
opts.allow_alpha_lists = true;
|
|
294
|
+
|
|
295
|
+
// To disable in unified mode:
|
|
296
|
+
opts.allow_alpha_lists = false;
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Example markdown:**
|
|
301
|
+
```markdown
|
|
302
|
+
a. First item
|
|
303
|
+
b. Second item
|
|
304
|
+
c. Third item
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
This produces HTML with `style="list-style-type: lower-alpha"` on the `<ol>` tag.
|
|
309
|
+
|
|
310
|
+
## Complete Example
|
|
311
|
+
|
|
312
|
+
```c
|
|
313
|
+
#include <apex/apex.h>
|
|
314
|
+
#include <stdio.h>
|
|
315
|
+
#include <string.h>
|
|
316
|
+
|
|
317
|
+
int main() {
|
|
318
|
+
// Markdown with metadata and variables
|
|
319
|
+
const char *markdown =
|
|
320
|
+
"---\n"
|
|
321
|
+
"title: Test Document\n"
|
|
322
|
+
"author: Brett\n"
|
|
323
|
+
"---\n"
|
|
324
|
+
"\n"
|
|
325
|
+
"# [%title]\n"
|
|
326
|
+
"\n"
|
|
327
|
+
"By [%author]\n"
|
|
328
|
+
"\n"
|
|
329
|
+
"This has **bold** and a [[WikiLink]].\n"
|
|
330
|
+
"\n"
|
|
331
|
+
"Math: $E = mc^2$\n"
|
|
332
|
+
"\n"
|
|
333
|
+
"Changes: {++added++} and {--removed--}\n"
|
|
334
|
+
"\n"
|
|
335
|
+
"1. Mixed markers\n"
|
|
336
|
+
"* Second item\n"
|
|
337
|
+
"\n"
|
|
338
|
+
"a. Alpha list\n"
|
|
339
|
+
"b. Second alpha\n";
|
|
340
|
+
|
|
341
|
+
// Use unified mode with all features
|
|
342
|
+
apex_options opts = apex_options_for_mode(APEX_MODE_UNIFIED);
|
|
343
|
+
// Mixed markers and alpha lists are enabled by default in unified mode
|
|
344
|
+
|
|
345
|
+
// Convert to HTML
|
|
346
|
+
char *html = apex_markdown_to_html(markdown, strlen(markdown), &opts);
|
|
347
|
+
|
|
348
|
+
if (html) {
|
|
349
|
+
printf("%s\n", html);
|
|
350
|
+
apex_free_string(html);
|
|
351
|
+
return 0;
|
|
352
|
+
} else {
|
|
353
|
+
fprintf(stderr, "Conversion failed\n");
|
|
354
|
+
return 1;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Compile and link:
|
|
361
|
+
```bash
|
|
362
|
+
gcc example.c -I/usr/local/include -L/usr/local/lib -lapex -o example
|
|
363
|
+
./example
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## Thread Safety
|
|
368
|
+
|
|
369
|
+
Apex is thread-safe as long as each thread uses its own `apex_options` structure and doesn't share document nodes. The conversion function `apex_markdown_to_html` can be called from multiple threads simultaneously.
|
|
370
|
+
|
|
371
|
+
## Memory Management
|
|
372
|
+
|
|
373
|
+
- All strings returned by Apex must be freed with
|
|
374
|
+
|
|
375
|
+
`apex_free_string()`
|
|
376
|
+
|
|
377
|
+
- `apex_options` structures are typically stack-allocated
|
|
378
|
+
|
|
379
|
+
(no freeing needed)
|
|
380
|
+
|
|
381
|
+
Metadata structures must be freed with `apex_free_metadata()`
|
|
382
|
+
|
|
383
|
+
## Error Handling
|
|
384
|
+
|
|
385
|
+
- Functions return NULL or empty strings on error
|
|
386
|
+
- Check return values before use
|
|
387
|
+
|
|
388
|
+
Errors are generally due to malloc failures or invalid input
|
|
389
|
+
|
|
390
|
+
## Performance Tips
|
|
391
|
+
|
|
392
|
+
1. **Reuse options**: Create `apex_options` once and reuse
|
|
393
|
+
|
|
394
|
+
for multiple conversions
|
|
395
|
+
|
|
396
|
+
2. **String size**: Provide accurate length to avoid
|
|
397
|
+
|
|
398
|
+
strlen() calls
|
|
399
|
+
|
|
400
|
+
3. **Disable unused features**: Turn off extensions you
|
|
401
|
+
|
|
402
|
+
don't need
|
|
403
|
+
|
|
404
|
+
**Batch processing**: Process multiple documents in parallel
|
|
405
|
+
|
|
406
|
+
## Building as a Library
|
|
407
|
+
|
|
408
|
+
### CMake Integration
|
|
409
|
+
|
|
410
|
+
```cmake
|
|
411
|
+
# In your CMakeLists.txt
|
|
412
|
+
add_subdirectory(apex)
|
|
413
|
+
target_link_libraries(your_app apex)
|
|
414
|
+
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Manual Linking
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# Compile
|
|
421
|
+
gcc -c -I/path/to/apex/include your_app.c
|
|
422
|
+
|
|
423
|
+
# Link
|
|
424
|
+
gcc your_app.o -L/path/to/apex/build -lapex -o your_app
|
|
425
|
+
|
|
426
|
+
# Run (may need library path)
|
|
427
|
+
DYLD_LIBRARY_PATH=/path/to/apex/build ./your_app # macOS
|
|
428
|
+
LD_LIBRARY_PATH=/path/to/apex/build ./your_app # Linux
|
|
429
|
+
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
## Integration with Marked
|
|
433
|
+
|
|
434
|
+
See `MARKED_INTEGRATION.md` for detailed instructions on integrating Apex into the Marked application.
|
|
435
|
+
|
|
436
|
+
Quick integration:
|
|
437
|
+
|
|
438
|
+
```objective-c
|
|
439
|
+
#import <NSString+Apex.h>
|
|
440
|
+
|
|
441
|
+
NSString *html = [NSString convertWithApex:markdownText];
|
|
442
|
+
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## See Also
|
|
446
|
+
|
|
447
|
+
- `USER_GUIDE.md` - User documentation
|
|
448
|
+
- `ARCHITECTURE.md` - Technical architecture
|
|
449
|
+
- `MARKED_INTEGRATION.md` - Marked integration guide
|
|
450
|
+
- `tests/test_runner.c` - Usage examples
|
|
451
|
+
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Apex Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Apex is built on top of cmark-gfm, the GitHub-maintained
|
|
6
|
+
CommonMark parser. It extends cmark-gfm with additional
|
|
7
|
+
syntax support for MultiMarkdown, Kramdown, and Marked's
|
|
8
|
+
special features.
|
|
9
|
+
|
|
10
|
+
## Components
|
|
11
|
+
|
|
12
|
+
### Core Library (`src/apex.c`)
|
|
13
|
+
|
|
14
|
+
- **apex_options**: Configuration structure for processor
|
|
15
|
+
|
|
16
|
+
modes and features
|
|
17
|
+
|
|
18
|
+
- **apex_markdown_to_html()**: Main conversion function
|
|
19
|
+
- **apex_to_cmark_options()**: Maps Apex options to
|
|
20
|
+
|
|
21
|
+
cmark-gfm flags
|
|
22
|
+
|
|
23
|
+
- **apex_register_extensions()**: Registers cmark-gfm
|
|
24
|
+
|
|
25
|
+
extensions based on mode
|
|
26
|
+
|
|
27
|
+
### CLI Tool (`cli/main.c`)
|
|
28
|
+
|
|
29
|
+
Command-line interface that accepts:
|
|
30
|
+
|
|
31
|
+
- Input from files or stdin
|
|
32
|
+
- Various processor modes (commonmark, gfm, mmd, kramdown,
|
|
33
|
+
|
|
34
|
+
unified)
|
|
35
|
+
|
|
36
|
+
- Feature flags to enable/disable specific syntax
|
|
37
|
+
|
|
38
|
+
### cmark-gfm Integration (`vendor/cmark-gfm/`)
|
|
39
|
+
|
|
40
|
+
Apex uses cmark-gfm's extension system to add features:
|
|
41
|
+
|
|
42
|
+
**Parser**: Tokenizes and builds AST (Abstract Syntax Tree)
|
|
43
|
+
|
|
44
|
+
- **AST nodes**: Structured representation of the document
|
|
45
|
+
- **Extensions**: Pluggable syntax additions (tables,
|
|
46
|
+
|
|
47
|
+
strikethrough, etc.)
|
|
48
|
+
|
|
49
|
+
**Renderers**: Convert AST to HTML, LaTeX, CommonMark, etc.
|
|
50
|
+
|
|
51
|
+
## Processing Pipeline
|
|
52
|
+
|
|
53
|
+
1. **Input** → Markdown text + options
|
|
54
|
+
2. **Parser creation** → `cmark_parser_new()` with flags
|
|
55
|
+
3. **Extension registration** → Attach syntax extensions
|
|
56
|
+
|
|
57
|
+
based on mode
|
|
58
|
+
|
|
59
|
+
**Parsing** → `cmark_parser_feed()` + `cmark_parser_finish()`
|
|
60
|
+
|
|
61
|
+
5. **AST** → Tree of `cmark_node` structures
|
|
62
|
+
6. **Rendering** → `cmark_render_html()` walks AST and
|
|
63
|
+
|
|
64
|
+
generates HTML
|
|
65
|
+
|
|
66
|
+
7. **Output** → HTML string
|
|
67
|
+
|
|
68
|
+
## Extension System
|
|
69
|
+
|
|
70
|
+
cmark-gfm's extension system allows hooking into:
|
|
71
|
+
|
|
72
|
+
- **Block parsing**: Custom block-level syntax (like tables,
|
|
73
|
+
|
|
74
|
+
callouts)
|
|
75
|
+
|
|
76
|
+
- **Inline parsing**: Custom inline syntax (like wiki links,
|
|
77
|
+
|
|
78
|
+
math)
|
|
79
|
+
|
|
80
|
+
**Rendering**: Custom HTML/LaTeX output for extension nodes
|
|
81
|
+
|
|
82
|
+
### Existing Extensions (from cmark-gfm)
|
|
83
|
+
|
|
84
|
+
- **table**: GFM-style tables with pipes
|
|
85
|
+
- **strikethrough**: `~~text~~` syntax
|
|
86
|
+
- **autolink**: Automatic URL linking
|
|
87
|
+
- **tasklist**: `- [ ]` and `- [x]` checkboxes
|
|
88
|
+
- **tagfilter**: HTML tag filtering for security
|
|
89
|
+
|
|
90
|
+
### Planned Apex Extensions
|
|
91
|
+
|
|
92
|
+
- **metadata**: YAML, MMD, and Pandoc metadata blocks
|
|
93
|
+
- **definition_lists**: Kramdown-style definition lists
|
|
94
|
+
- **attributes**: `{: #id .class}` syntax on any element
|
|
95
|
+
- **footnotes_inline**: `^[inline footnote]` syntax (extends
|
|
96
|
+
|
|
97
|
+
cmark-gfm footnotes)
|
|
98
|
+
|
|
99
|
+
- **math**: `$inline$` and `$$display$$` math blocks
|
|
100
|
+
- **critic_markup**: `{++add++}`, `{--del--}`, etc.
|
|
101
|
+
- **wiki_links**: `[[Page Name]]` syntax
|
|
102
|
+
- **callouts**: `> [!NOTE]` Obsidian/Bear style
|
|
103
|
+
- **marked_special**: `<!--TOC-->`, `<<[include]>>`, page
|
|
104
|
+
|
|
105
|
+
breaks, etc.
|
|
106
|
+
|
|
107
|
+
## Processor Modes
|
|
108
|
+
|
|
109
|
+
### CommonMark
|
|
110
|
+
Pure CommonMark spec compliance. No extensions.
|
|
111
|
+
|
|
112
|
+
### GFM (GitHub Flavored Markdown)
|
|
113
|
+
- Tables
|
|
114
|
+
- Strikethrough
|
|
115
|
+
- Task lists
|
|
116
|
+
- Autolinks
|
|
117
|
+
- Hard line breaks
|
|
118
|
+
|
|
119
|
+
### MultiMarkdown
|
|
120
|
+
- Metadata blocks
|
|
121
|
+
- Footnotes
|
|
122
|
+
- Tables
|
|
123
|
+
- Smart typography
|
|
124
|
+
- Math support
|
|
125
|
+
- File includes
|
|
126
|
+
- Metadata variable replacement `[%key]`
|
|
127
|
+
|
|
128
|
+
### Kramdown
|
|
129
|
+
- Attributes `{: #id .class}`
|
|
130
|
+
- Definition lists
|
|
131
|
+
- Footnotes
|
|
132
|
+
- Tables
|
|
133
|
+
- Smart typography
|
|
134
|
+
- Math support
|
|
135
|
+
|
|
136
|
+
### Unified (default)
|
|
137
|
+
All features enabled - the superset of all modes.
|
|
138
|
+
|
|
139
|
+
## Building
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
mkdir build && cd build
|
|
143
|
+
cmake ..
|
|
144
|
+
make
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Outputs:
|
|
149
|
+
|
|
150
|
+
- `apex` - CLI binary
|
|
151
|
+
- `libapex.dylib` / `libapex.so` - Shared library
|
|
152
|
+
- `libapex.a` - Static library
|
|
153
|
+
- `Apex.framework` - macOS framework (if on macOS)
|
|
154
|
+
|
|
155
|
+
## Next Steps
|
|
156
|
+
|
|
157
|
+
1. Implement metadata parsing extension
|
|
158
|
+
2. Add definition lists support
|
|
159
|
+
3. Implement Kramdown attributes
|
|
160
|
+
4. Add wiki-style links
|
|
161
|
+
5. Implement callouts (Obsidian/Bear style)
|
|
162
|
+
6. Add Marked's special syntax
|
|
163
|
+
7. Implement math block detection
|
|
164
|
+
8. Add Critic Markup support
|
|
165
|
+
9. Comprehensive test suite
|
|
166
|
+
|