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,96 @@
|
|
|
1
|
+
# GFM Header ID Generation Comparison
|
|
2
|
+
|
|
3
|
+
This document summarizes the differences between various
|
|
4
|
+
tools for generating GFM-compliant header IDs.
|
|
5
|
+
|
|
6
|
+
## Tools Tested
|
|
7
|
+
|
|
8
|
+
- **Pandoc**: General-purpose document converter
|
|
9
|
+
- **Comrak**: Rust-based GFM parser (likely most accurate)
|
|
10
|
+
- **Marked (JavaScript)**: JavaScript markdown parser with
|
|
11
|
+
|
|
12
|
+
gfm-heading-id plugin
|
|
13
|
+
|
|
14
|
+
- **Apex**: Our implementation
|
|
15
|
+
|
|
16
|
+
## Key Differences
|
|
17
|
+
|
|
18
|
+
### 1. Multiple Spaces
|
|
19
|
+
**Comrak/Marked**: Convert to multiple dashes (`multiple---spaces---here`)
|
|
20
|
+
|
|
21
|
+
**Pandoc/Apex**: Collapse to single dash (`multiple-spaces-here`)
|
|
22
|
+
|
|
23
|
+
### 2. Underscores
|
|
24
|
+
**Comrak/Marked/Pandoc**: Preserve underscores (`heading_with_underscore`)
|
|
25
|
+
|
|
26
|
+
- **Apex**: Remove underscores (`headingwithunderscore`)
|
|
27
|
+
|
|
28
|
+
### 3. Em/En Dashes
|
|
29
|
+
- **Comrak/Marked/Pandoc**: Convert to double dashes
|
|
30
|
+
|
|
31
|
+
(`em-dash--test`)
|
|
32
|
+
|
|
33
|
+
- **Apex**: Remove dashes (`em-dash-test`)
|
|
34
|
+
|
|
35
|
+
### 4. Diacritics
|
|
36
|
+
**Comrak/Marked/Pandoc**: Preserve diacritics (`diacritics-émoji-support`)
|
|
37
|
+
|
|
38
|
+
- **Apex**: Convert to ASCII (`diacritics-amoji-support`)
|
|
39
|
+
|
|
40
|
+
### 5. Non-Latin Characters
|
|
41
|
+
- **Comrak/Marked/Pandoc**: Preserve characters
|
|
42
|
+
|
|
43
|
+
(`cyrillic-привет`)
|
|
44
|
+
|
|
45
|
+
- **Apex**: Convert to placeholders (`cyrillic-nn`)
|
|
46
|
+
|
|
47
|
+
### 6. Trailing Dashes
|
|
48
|
+
- **Comrak/Marked/Pandoc**: Preserve trailing dashes
|
|
49
|
+
|
|
50
|
+
(`trailing-dash-test-`)
|
|
51
|
+
|
|
52
|
+
- **Apex**: Trim trailing dashes (`trailing-dash-test`)
|
|
53
|
+
|
|
54
|
+
### 7. Trailing Punctuation
|
|
55
|
+
- **Comrak/Marked/Pandoc**: Preserve trailing punctuation
|
|
56
|
+
|
|
57
|
+
(`special-characters-`)
|
|
58
|
+
|
|
59
|
+
**Apex**: Remove trailing punctuation (`special-characters`)
|
|
60
|
+
|
|
61
|
+
### 8. Special Characters Only
|
|
62
|
+
- **Comrak**: Generates empty ID for `!@#$%^&*()`
|
|
63
|
+
- **Others**: Generate some ID
|
|
64
|
+
|
|
65
|
+
## Recommendations
|
|
66
|
+
|
|
67
|
+
Based on the comparison, **Comrak** and **Marked** appear to
|
|
68
|
+
follow GFM rules most closely and produce identical results
|
|
69
|
+
for most cases. To match GFM exactly, we should:
|
|
70
|
+
|
|
71
|
+
1. **Preserve underscores** (don't remove them)
|
|
72
|
+
|
|
73
|
+
**Convert em/en dashes to double dashes** (not remove them)
|
|
74
|
+
|
|
75
|
+
3. **Preserve diacritics** (don't convert to ASCII)
|
|
76
|
+
4. **Preserve non-Latin characters** (don't convert to
|
|
77
|
+
|
|
78
|
+
placeholders)
|
|
79
|
+
|
|
80
|
+
5. **Preserve trailing dashes** (don't trim them)
|
|
81
|
+
6. **Preserve trailing punctuation** (don't remove it)
|
|
82
|
+
7. **Handle multiple spaces** - need to verify GFM behavior
|
|
83
|
+
|
|
84
|
+
(Comrak/Marked use multiple dashes)
|
|
85
|
+
|
|
86
|
+
## Running the Comparison
|
|
87
|
+
|
|
88
|
+
Run the comparison script:
|
|
89
|
+
```bash
|
|
90
|
+
./tests/generate_gfm_ids.sh
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
This will show side-by-side comparison of all available
|
|
95
|
+
tools.
|
|
96
|
+
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>IAL Demo - Attribute Inspector</title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
10
|
+
line-height: 1.6;
|
|
11
|
+
max-width: 900px;
|
|
12
|
+
margin: 0 auto;
|
|
13
|
+
padding: 20px;
|
|
14
|
+
background-color: #f5f5f5;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.content {
|
|
18
|
+
background: white;
|
|
19
|
+
padding: 30px;
|
|
20
|
+
border-radius: 8px;
|
|
21
|
+
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Style for elements with attributes - add visual indicator */
|
|
25
|
+
[class]:hover,
|
|
26
|
+
[id]:hover {
|
|
27
|
+
outline: 2px solid #4CAF50;
|
|
28
|
+
outline-offset: 2px;
|
|
29
|
+
background-color: rgba(76, 175, 80, 0.1);
|
|
30
|
+
transition: background-color 0.2s;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
33
|
+
<script>
|
|
34
|
+
// Add tooltips showing all attributes on hover
|
|
35
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
36
|
+
// Create tooltip element
|
|
37
|
+
const tooltip = document.createElement('div');
|
|
38
|
+
tooltip.id = 'attribute-tooltip';
|
|
39
|
+
tooltip.style.cssText = 'position: absolute; background: #333; color: white; padding: 8px 12px; border-radius: 4px; font-size: 12px; font-family: "Courier New", monospace; z-index: 10000; pointer-events: none; opacity: 0; transition: opacity 0.2s; box-shadow: 0 2px 8px rgba(0,0,0,0.3); max-width: 400px; word-wrap: break-word; white-space: normal; line-height: 1.4;';
|
|
40
|
+
document.body.appendChild(tooltip);
|
|
41
|
+
|
|
42
|
+
// Function to get all attributes as a formatted string
|
|
43
|
+
function getAttributesString(el) {
|
|
44
|
+
const attrs = [];
|
|
45
|
+
if (el.id) attrs.push('id="' + el.id + '"');
|
|
46
|
+
if (el.className) attrs.push('class="' + el.className + '"');
|
|
47
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
48
|
+
const attr = el.attributes[i];
|
|
49
|
+
if (attr.name !== 'id' && attr.name !== 'class' && !attr.name.startsWith('data-apex-')) {
|
|
50
|
+
attrs.push(attr.name + '="' + attr.value + '"');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return attrs.length > 0 ? attrs.join(' ') : 'No attributes';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Add hover handlers to all elements with attributes
|
|
57
|
+
const elementsWithAttrs = document.querySelectorAll('[class], [id]');
|
|
58
|
+
elementsWithAttrs.forEach(el => {
|
|
59
|
+
// Skip the tooltip itself and elements inside code blocks
|
|
60
|
+
if (el.id === 'attribute-tooltip' || el.closest('code') || el.closest('pre')) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
el.addEventListener('mouseenter', function(e) {
|
|
65
|
+
const attrs = getAttributesString(this);
|
|
66
|
+
const tagName = this.tagName.toLowerCase();
|
|
67
|
+
tooltip.innerHTML = '<strong><' + tagName + '</strong> ' +
|
|
68
|
+
(attrs !== 'No attributes' ? attrs : '<em>' + attrs + '</em>') +
|
|
69
|
+
'<strong>></strong>';
|
|
70
|
+
tooltip.style.opacity = '1';
|
|
71
|
+
|
|
72
|
+
const rect = this.getBoundingClientRect();
|
|
73
|
+
let left = rect.left + window.scrollX;
|
|
74
|
+
let top = rect.top + window.scrollY - tooltip.offsetHeight - 8;
|
|
75
|
+
|
|
76
|
+
// Position tooltip
|
|
77
|
+
tooltip.style.left = left + 'px';
|
|
78
|
+
tooltip.style.top = top + 'px';
|
|
79
|
+
|
|
80
|
+
// Adjust if tooltip goes off screen
|
|
81
|
+
setTimeout(() => {
|
|
82
|
+
const tooltipRect = tooltip.getBoundingClientRect();
|
|
83
|
+
if (tooltipRect.left < 0) {
|
|
84
|
+
tooltip.style.left = '10px';
|
|
85
|
+
}
|
|
86
|
+
if (tooltipRect.top < 0) {
|
|
87
|
+
tooltip.style.top = (rect.bottom + window.scrollY + 8) + 'px';
|
|
88
|
+
}
|
|
89
|
+
if (tooltipRect.right > window.innerWidth) {
|
|
90
|
+
tooltip.style.left = (window.innerWidth - tooltipRect.width - 10) + 'px';
|
|
91
|
+
}
|
|
92
|
+
}, 0);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
el.addEventListener('mouseleave', function() {
|
|
96
|
+
tooltip.style.opacity = '0';
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
console.log('Attribute inspector loaded. Hover over elements with attributes to see them.');
|
|
101
|
+
});
|
|
102
|
+
</script>
|
|
103
|
+
</head>
|
|
104
|
+
<body>
|
|
105
|
+
<div class="content">
|
|
106
|
+
<h1 id="ial-inline-attribute-lists-demo">IAL (Inline Attribute Lists) Demo</h1>
|
|
107
|
+
<p>This document demonstrates all supported IAL features in Apex.</p>
|
|
108
|
+
<h2 id="block-level-ials-next-line">Block-Level IALs (Next-Line)</h2>
|
|
109
|
+
<p>Block-level IALs appear on a separate line after the element they apply to.</p>
|
|
110
|
+
<h3 id="headings-with-ials">Headings with IALs</h3>
|
|
111
|
+
<h1 id="custom-heading-id">Heading with ID</h1>
|
|
112
|
+
<h2 class="highlight" id="custom-heading-id">Heading with Class</h2>
|
|
113
|
+
<h3 id="heading-id" class="class1 class2">Heading with Both</h3>
|
|
114
|
+
<h4 class="primary large bold" id="heading-with-class">Multiple Classes</h4>
|
|
115
|
+
<h3 id="heading-id">Paragraphs with IALs</h3>
|
|
116
|
+
<p class="tip">This paragraph has a class applied to it.</p>
|
|
117
|
+
<p id="paragraph-id" class="important note">This paragraph has an ID and multiple classes.</p>
|
|
118
|
+
<h3 id="multiple-classes">Lists with IALs</h3>
|
|
119
|
+
<ul class="unordered-list">
|
|
120
|
+
<li>First item</li>
|
|
121
|
+
<li>Second item</li>
|
|
122
|
+
<li>Third item</li>
|
|
123
|
+
<li>Numbered item one</li>
|
|
124
|
+
<li>Numbered item two</li>
|
|
125
|
+
<li>Numbered item three</li>
|
|
126
|
+
</ul>
|
|
127
|
+
<h3 id="paragraphs-with-ials">Blockquotes with IALs</h3>
|
|
128
|
+
<blockquote class="quote inspirational">
|
|
129
|
+
<p>This is a blockquote with attributes.</p>
|
|
130
|
+
</blockquote>
|
|
131
|
+
<h2 id="lists-with-ials">Inline Span-Level IALs</h2>
|
|
132
|
+
<p>Inline IALs appear immediately after inline elements within paragraphs.</p>
|
|
133
|
+
<h3 id="blockquotes-with-ials">Links with Inline IALs</h3>
|
|
134
|
+
<p>This is a <a href="https://example.com">regular link</a> without an IAL.</p>
|
|
135
|
+
<p>Here’s a paragraph with a <a href="https://example.com" class="button">styled link</a> that has a button class.</p>
|
|
136
|
+
<p>You can have <a href="https://example.com" class="link-primary">multiple links</a> with <a href="https://example.com" class="link-secondary">different classes</a> in the same paragraph.</p>
|
|
137
|
+
<p>Links with the <a href="https://example.com">same URL</a> should still work correctly when <a href="https://example.com" class="special-link">one has an IAL</a>.</p>
|
|
138
|
+
<h3 id="inline-span-level-ials">Images with Inline IALs</h3>
|
|
139
|
+
<p><img src="image.png" alt="Regular image" /></p>
|
|
140
|
+
<p><img src="logo.png" alt="Styled image" class="logo centered" /></p>
|
|
141
|
+
<p><img src="icon.png" alt="Image with ID" id="site-icon" class="icon" /></p>
|
|
142
|
+
<h3 id="links-with-inline-ials">Emphasis with Inline IALs</h3>
|
|
143
|
+
<p>This paragraph has <strong class="bold-style">bold text</strong> with a custom class and <em class="italic-style">italic text</em> with another class.</p>
|
|
144
|
+
<p>You can combine <strong class="bold">bold</strong> and <em class="italic">italic</em> in the same paragraph with different styles.</p>
|
|
145
|
+
<p>Nested <strong class="bold-wrapper">bold with <em class="nested-italic">italic</em> inside</strong> works too.</p>
|
|
146
|
+
<h3 id="images-with-inline-ials">Code with Inline IALs</h3>
|
|
147
|
+
<p>Use <code class="code-inline">inline code</code> for code snippets with styling.</p>
|
|
148
|
+
<p>You can have multiple <code class="code-1">code spans</code> and <code class="code-2">more code</code> with different classes.</p>
|
|
149
|
+
<h3 id="emphasis-with-inline-ials">Mixed Inline Elements</h3>
|
|
150
|
+
<p>This paragraph combines a <a href="https://example.com" class="link-class">link</a>, <strong class="bold-class">bold text</strong>, <em class="italic-class">italic text</em>, and <code class="code-class">code</code> all with different IALs.</p>
|
|
151
|
+
<h2 id="code-with-inline-ials">Complex Examples</h2>
|
|
152
|
+
<h3 id="mixed-inline-elements">Multiple IALs in Sequence</h3>
|
|
153
|
+
<p><a href="url1" class="first">First link</a> and <a href="url2" class="second">second link</a> and <a href="url3" class="third">third link</a> all in one paragraph.</p>
|
|
154
|
+
<p><strong class="b1">First bold</strong>, <strong class="b2">second bold</strong>, and <strong class="b3">third bold</strong> text elements.</p>
|
|
155
|
+
<h3 id="complex-examples">IALs with Text After</h3>
|
|
156
|
+
<p><a href="https://example.com" class="button">Click here</a> to visit our website and learn more.</p>
|
|
157
|
+
<p><strong>Important</strong>: This text has an IAL{:.highlight} that isn’t associated with a span or block level element (bold, italics, link, etc.) and is therefore ignored (left in the text).</p>
|
|
158
|
+
<h3 id="multiple-ials-in-sequence">IALs with Duplicate URLs</h3>
|
|
159
|
+
<p>Here’s a <a href="https://example.com">regular link</a> to demonstrate link styling.</p>
|
|
160
|
+
<p><a href="https://example.com" class="button">Click This Button</a></p>
|
|
161
|
+
<p>Both links point to the same URL, but only the second one has the button class.</p>
|
|
162
|
+
<h3 id="ials-with-text-after">IALs with Multiple Attributes</h3>
|
|
163
|
+
<p><a href="url" class="primary large button">Link with multiple classes</a></p>
|
|
164
|
+
<p><strong id="bold-id" class="highlight important">Bold with ID and classes</strong></p>
|
|
165
|
+
<h2 id="ials-with-duplicate-urls">Edge Cases</h2>
|
|
166
|
+
<h3 id="ials-with-multiple-attributes">IAL at End of Paragraph</h3>
|
|
167
|
+
<p>This paragraph ends with a <a href="https://example.com" class="end-link">link</a>.</p>
|
|
168
|
+
<h3 id="edge-cases">IAL with Whitespace</h3>
|
|
169
|
+
<p><a href="url" class="spaced-class">Link</a> works with spaces.</p>
|
|
170
|
+
<h3 id="ial-at-end-of-paragraph">IALs in Lists</h3>
|
|
171
|
+
<ul>
|
|
172
|
+
<li>List item with <a href="url" class="list-link">link</a></li>
|
|
173
|
+
<li>Another item with <strong class="list-bold">bold</strong> text</li>
|
|
174
|
+
<li>Final item with <code class="list-code">code</code></li>
|
|
175
|
+
</ul>
|
|
176
|
+
<h2 id="ial-with-whitespace">Summary</h2>
|
|
177
|
+
<p>IALs provide a powerful way to add HTML attributes to markdown elements:</p>
|
|
178
|
+
<ul>
|
|
179
|
+
<li>Block-level IALs use next-line syntax: <code>{: .class #id}</code></li>
|
|
180
|
+
<li>Inline IALs appear immediately after elements: <code>[link](url){:.class}</code></li>
|
|
181
|
+
<li>Support for IDs, classes, and custom attributes</li>
|
|
182
|
+
<li>Works with headings, paragraphs, lists, blockquotes, links, images, emphasis, and code</li>
|
|
183
|
+
</ul>
|
|
184
|
+
</div>
|
|
185
|
+
</body>
|
|
186
|
+
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Example code for inclusion"""
|
|
3
|
+
|
|
4
|
+
def process_document(filename):
|
|
5
|
+
"""Process a markdown document"""
|
|
6
|
+
with open(filename, 'r') as f:
|
|
7
|
+
content = f.read()
|
|
8
|
+
return convert_markdown(content)
|
|
9
|
+
|
|
10
|
+
def convert_markdown(text):
|
|
11
|
+
"""Convert markdown to HTML"""
|
|
12
|
+
processor = MarkdownProcessor()
|
|
13
|
+
return processor.render(text)
|
|
14
|
+
|
|
15
|
+
if __name__ == '__main__':
|
|
16
|
+
import sys
|
|
17
|
+
result = process_document(sys.argv[1])
|
|
18
|
+
print(result)
|
|
19
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
### Included Content
|
|
2
|
+
|
|
3
|
+
This content was **included** from an external file. It
|
|
4
|
+
demonstrates:
|
|
5
|
+
|
|
6
|
+
- File inclusion feature
|
|
7
|
+
- Recursive markdown processing
|
|
8
|
+
- Path resolution
|
|
9
|
+
|
|
10
|
+
You can include this in other documents seamlessly!
|
|
11
|
+
|
|
12
|
+
This is line 11. It contains the pattern 1234567.
|
|
13
|
+
This is line 12.
|
|
14
|
+
This is line 13.
|
|
15
|
+
Z: This is line 14. it includes a prefix.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Simple CLI-level sanity tests for --mmd-merge and --combine (GitBook SUMMARY.md)
|
|
4
|
+
# using the existing combine_summary fixtures.
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
9
|
+
APEX_BIN="$ROOT/build/apex"
|
|
10
|
+
|
|
11
|
+
if [[ ! -x "$APEX_BIN" ]]; then
|
|
12
|
+
echo "Error: $APEX_BIN not found or not executable. Build Apex first (cmake --build build)." >&2
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
FIXTURES="$ROOT/tests/fixtures/combine_summary"
|
|
17
|
+
|
|
18
|
+
TMPDIR="$(mktemp -d "${TMPDIR:-/tmp}/apex-multi-file-XXXXXX")"
|
|
19
|
+
trap 'rm -rf "$TMPDIR"' EXIT
|
|
20
|
+
|
|
21
|
+
echo "== Testing --mmd-merge with mmd_merge-style index =="
|
|
22
|
+
|
|
23
|
+
MMD_OUT="$TMPDIR/mmd_merge_output.md"
|
|
24
|
+
"$APEX_BIN" --mmd-merge "$FIXTURES/index.txt" >"$MMD_OUT"
|
|
25
|
+
|
|
26
|
+
# Expect Intro, Chapter 1, and Section 1.1 in order, with Section 1.1 headings shifted one level
|
|
27
|
+
grep -q '^# Intro' "$MMD_OUT" || {
|
|
28
|
+
echo "mmd-merge: missing Intro heading"
|
|
29
|
+
exit 1
|
|
30
|
+
}
|
|
31
|
+
grep -q '^# Chapter 1' "$MMD_OUT" || {
|
|
32
|
+
echo "mmd-merge: missing Chapter 1 heading"
|
|
33
|
+
exit 1
|
|
34
|
+
}
|
|
35
|
+
grep -q '^## Section 1\.1' "$MMD_OUT" || {
|
|
36
|
+
echo "mmd-merge: Section 1.1 heading was not shifted to level 2"
|
|
37
|
+
exit 1
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
echo "mmd-merge index test passed."
|
|
41
|
+
|
|
42
|
+
echo
|
|
43
|
+
echo "== Testing --combine with GitBook-style SUMMARY.md =="
|
|
44
|
+
|
|
45
|
+
COMBINE_OUT="$TMPDIR/summary_combine_output.md"
|
|
46
|
+
"$APEX_BIN" --combine "$FIXTURES/SUMMARY.md" >"$COMBINE_OUT"
|
|
47
|
+
|
|
48
|
+
grep -q '^# Intro' "$COMBINE_OUT" || {
|
|
49
|
+
echo "combine: missing Intro heading from SUMMARY.md combine"
|
|
50
|
+
exit 1
|
|
51
|
+
}
|
|
52
|
+
grep -q '^# Chapter 1' "$COMBINE_OUT" || {
|
|
53
|
+
echo "combine: missing Chapter 1 heading from SUMMARY.md combine"
|
|
54
|
+
exit 1
|
|
55
|
+
}
|
|
56
|
+
grep -q '^# Section 1\.1' "$COMBINE_OUT" || {
|
|
57
|
+
echo "combine: missing Section 1.1 heading from SUMMARY.md combine"
|
|
58
|
+
exit 1
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
echo "SUMMARY.md combine test passed."
|
|
62
|
+
|
|
63
|
+
echo
|
|
64
|
+
echo "All multi-file CLI tests passed."
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Basic Tests
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
#include "test_helpers.h"
|
|
6
|
+
#include "apex/apex.h"
|
|
7
|
+
#include <string.h>
|
|
8
|
+
|
|
9
|
+
void test_basic_markdown(void) {
|
|
10
|
+
int suite_failures = suite_start();
|
|
11
|
+
print_suite_title("Basic Markdown Tests", false, true);
|
|
12
|
+
|
|
13
|
+
apex_options opts = apex_options_default();
|
|
14
|
+
char *html;
|
|
15
|
+
|
|
16
|
+
/* Test headers */
|
|
17
|
+
html = apex_markdown_to_html("# Header 1", 10, &opts);
|
|
18
|
+
assert_contains(html, "<h1", "H1 header tag");
|
|
19
|
+
assert_contains(html, "Header 1</h1>", "H1 header content");
|
|
20
|
+
assert_contains(html, "id=", "H1 header has ID");
|
|
21
|
+
apex_free_string(html);
|
|
22
|
+
|
|
23
|
+
/* Test emphasis */
|
|
24
|
+
html = apex_markdown_to_html("**bold** and *italic*", 21, &opts);
|
|
25
|
+
assert_contains(html, "<strong>bold</strong>", "Bold text");
|
|
26
|
+
assert_contains(html, "<em>italic</em>", "Italic text");
|
|
27
|
+
apex_free_string(html);
|
|
28
|
+
|
|
29
|
+
/* Test lists */
|
|
30
|
+
html = apex_markdown_to_html("- Item 1\n- Item 2", 17, &opts);
|
|
31
|
+
assert_contains(html, "<ul>", "Unordered list");
|
|
32
|
+
assert_contains(html, "<li>Item 1</li>", "List item");
|
|
33
|
+
apex_free_string(html);
|
|
34
|
+
|
|
35
|
+
bool had_failures = suite_end(suite_failures);
|
|
36
|
+
print_suite_title("Basic Markdown Tests", had_failures, false);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Test GFM features
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
void test_gfm_features(void) {
|
|
44
|
+
int suite_failures = suite_start();
|
|
45
|
+
print_suite_title("GFM Features Tests", false, true);
|
|
46
|
+
|
|
47
|
+
apex_options opts = apex_options_for_mode(APEX_MODE_GFM);
|
|
48
|
+
char *html;
|
|
49
|
+
|
|
50
|
+
/* Test strikethrough */
|
|
51
|
+
html = apex_markdown_to_html("~~deleted~~", 11, &opts);
|
|
52
|
+
assert_contains(html, "<del>deleted</del>", "Strikethrough");
|
|
53
|
+
apex_free_string(html);
|
|
54
|
+
|
|
55
|
+
/* Test task lists */
|
|
56
|
+
html = apex_markdown_to_html("- [ ] Todo\n- [x] Done", 22, &opts);
|
|
57
|
+
assert_contains(html, "checkbox", "Task list checkbox");
|
|
58
|
+
apex_free_string(html);
|
|
59
|
+
|
|
60
|
+
/* Test tables */
|
|
61
|
+
const char *table = "| H1 | H2 |\n|-----|-----|\n| C1 | C2 |";
|
|
62
|
+
html = apex_markdown_to_html(table, strlen(table), &opts);
|
|
63
|
+
assert_contains(html, "<table>", "GFM table");
|
|
64
|
+
assert_contains(html, "<th>H1</th>", "Table header");
|
|
65
|
+
assert_contains(html, "<td>C1</td>", "Table cell");
|
|
66
|
+
apex_free_string(html);
|
|
67
|
+
|
|
68
|
+
bool had_failures = suite_end(suite_failures);
|
|
69
|
+
print_suite_title("GFM Features Tests", had_failures, false);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Test metadata
|
|
74
|
+
*/
|