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,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Citations Extension for Apex
|
|
3
|
+
*
|
|
4
|
+
* Supports multiple citation syntaxes:
|
|
5
|
+
* - Pandoc: [@key], @key, [see @key, pp. 33-35]
|
|
6
|
+
* - MultiMarkdown: [#key], [p. 23][#key]
|
|
7
|
+
* - mmark: [@RFC2535], [@!RFC1034], [@RFC1034;@RFC1035]
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef APEX_CITATIONS_H
|
|
11
|
+
#define APEX_CITATIONS_H
|
|
12
|
+
|
|
13
|
+
#include <stdbool.h>
|
|
14
|
+
#include <stddef.h>
|
|
15
|
+
#include "cmark-gfm.h"
|
|
16
|
+
#include "cmark-gfm-extension_api.h"
|
|
17
|
+
#include "../../include/apex/apex.h"
|
|
18
|
+
|
|
19
|
+
#ifdef __cplusplus
|
|
20
|
+
extern "C" {
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
/* Citation syntax types */
|
|
24
|
+
typedef enum {
|
|
25
|
+
APEX_CITATION_PANDOC = 0,
|
|
26
|
+
APEX_CITATION_MMD = 1,
|
|
27
|
+
APEX_CITATION_MMARK = 2
|
|
28
|
+
} apex_citation_syntax_t;
|
|
29
|
+
|
|
30
|
+
/* Citation structure */
|
|
31
|
+
typedef struct apex_citation {
|
|
32
|
+
char *key; /* Citation key (e.g., "doe99") */
|
|
33
|
+
char *prefix; /* Prefix text (e.g., "see") */
|
|
34
|
+
char *locator; /* Locator (e.g., "pp. 33-35") */
|
|
35
|
+
char *suffix; /* Suffix text (e.g., "and passim") */
|
|
36
|
+
bool author_suppressed; /* -@key syntax */
|
|
37
|
+
bool author_in_text; /* @key syntax (no brackets) */
|
|
38
|
+
apex_citation_syntax_t syntax_type; /* PANDOC, MMD, MMARK */
|
|
39
|
+
int position; /* Position in document */
|
|
40
|
+
struct apex_citation *next; /* Linked list */
|
|
41
|
+
} apex_citation;
|
|
42
|
+
|
|
43
|
+
/* Bibliography entry structure (simplified CSL JSON) */
|
|
44
|
+
typedef struct apex_bibliography_entry {
|
|
45
|
+
char *id; /* Citation key (e.g., "doe99") */
|
|
46
|
+
char *type; /* Entry type (article-journal, book, etc.) */
|
|
47
|
+
char *title; /* Title */
|
|
48
|
+
char *author; /* Author (formatted string) */
|
|
49
|
+
char *year; /* Year */
|
|
50
|
+
char *container_title; /* Journal/container title */
|
|
51
|
+
char *publisher; /* Publisher */
|
|
52
|
+
char *volume; /* Volume */
|
|
53
|
+
char *page; /* Pages */
|
|
54
|
+
char *raw_data; /* Raw JSON/BibTeX data for future use */
|
|
55
|
+
struct apex_bibliography_entry *next; /* Linked list */
|
|
56
|
+
} apex_bibliography_entry;
|
|
57
|
+
|
|
58
|
+
/* Bibliography registry */
|
|
59
|
+
typedef struct {
|
|
60
|
+
apex_bibliography_entry *entries; /* Linked list of bibliography entries */
|
|
61
|
+
size_t count; /* Number of entries */
|
|
62
|
+
} apex_bibliography_registry;
|
|
63
|
+
|
|
64
|
+
/* Citation registry */
|
|
65
|
+
typedef struct {
|
|
66
|
+
apex_citation *citations; /* Linked list of citations */
|
|
67
|
+
size_t count; /* Number of citations */
|
|
68
|
+
apex_bibliography_registry *bibliography; /* Bibliography entries */
|
|
69
|
+
} apex_citation_registry;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Create and return the citations extension
|
|
73
|
+
*/
|
|
74
|
+
cmark_syntax_extension *create_citations_extension(void);
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Process citations in text via preprocessing
|
|
78
|
+
* Extracts citations and stores them in registry
|
|
79
|
+
* Returns modified text with citations marked
|
|
80
|
+
*/
|
|
81
|
+
char *apex_process_citations(const char *text, apex_citation_registry *registry, const apex_options *options);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Render citations in HTML output
|
|
85
|
+
* Replaces citation markers with formatted HTML
|
|
86
|
+
*/
|
|
87
|
+
char *apex_render_citations(const char *html, apex_citation_registry *registry, const apex_options *options);
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Generate bibliography HTML from cited entries
|
|
91
|
+
* Returns formatted bibliography HTML
|
|
92
|
+
*/
|
|
93
|
+
char *apex_generate_bibliography(apex_citation_registry *registry, const apex_options *options);
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Insert bibliography at <!-- REFERENCES --> marker or end of document
|
|
97
|
+
* Returns HTML with bibliography inserted
|
|
98
|
+
*/
|
|
99
|
+
char *apex_insert_bibliography(const char *html, apex_citation_registry *registry, const apex_options *options);
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Free citation registry
|
|
103
|
+
*/
|
|
104
|
+
void apex_free_citation_registry(apex_citation_registry *registry);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Create a new citation
|
|
108
|
+
*/
|
|
109
|
+
apex_citation *apex_citation_new(const char *key, apex_citation_syntax_t syntax_type);
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Free a citation
|
|
113
|
+
*/
|
|
114
|
+
void apex_citation_free(apex_citation *citation);
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Load bibliography from file(s)
|
|
118
|
+
* Auto-detects format from extension (.bib, .json, .yaml, .yml)
|
|
119
|
+
* Returns bibliography registry, or NULL on error
|
|
120
|
+
*/
|
|
121
|
+
apex_bibliography_registry *apex_load_bibliography(const char **files, const char *base_directory);
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Load bibliography from a single file
|
|
125
|
+
* Auto-detects format from extension
|
|
126
|
+
*/
|
|
127
|
+
apex_bibliography_registry *apex_load_bibliography_file(const char *filepath);
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Parse BibTeX file
|
|
131
|
+
*/
|
|
132
|
+
apex_bibliography_registry *apex_parse_bibtex(const char *content);
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Parse CSL JSON file
|
|
136
|
+
*/
|
|
137
|
+
apex_bibliography_registry *apex_parse_csl_json(const char *content);
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Parse CSL YAML file
|
|
141
|
+
*/
|
|
142
|
+
apex_bibliography_registry *apex_parse_csl_yaml(const char *content);
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Find bibliography entry by ID
|
|
146
|
+
*/
|
|
147
|
+
apex_bibliography_entry *apex_find_bibliography_entry(apex_bibliography_registry *registry, const char *id);
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Free bibliography registry
|
|
151
|
+
*/
|
|
152
|
+
void apex_free_bibliography_registry(apex_bibliography_registry *registry);
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Free bibliography entry
|
|
156
|
+
*/
|
|
157
|
+
void apex_bibliography_entry_free(apex_bibliography_entry *entry);
|
|
158
|
+
|
|
159
|
+
#ifdef __cplusplus
|
|
160
|
+
}
|
|
161
|
+
#endif
|
|
162
|
+
|
|
163
|
+
#endif /* APEX_CITATIONS_H */
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Critic Markup Extension for Apex
|
|
3
|
+
* Implementation
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#include "critic.h"
|
|
7
|
+
#include <string.h>
|
|
8
|
+
#include <stdlib.h>
|
|
9
|
+
#include <stdbool.h>
|
|
10
|
+
#include <ctype.h>
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Scan for Critic Markup patterns
|
|
14
|
+
* Returns type and length if found
|
|
15
|
+
*/
|
|
16
|
+
typedef enum {
|
|
17
|
+
CRITIC_NONE = 0,
|
|
18
|
+
CRITIC_ADD, /* {++text++} */
|
|
19
|
+
CRITIC_DEL, /* {--text--} */
|
|
20
|
+
CRITIC_SUB, /* {~~old~>new~~} */
|
|
21
|
+
CRITIC_HIGHLIGHT, /* {==text==} */
|
|
22
|
+
CRITIC_COMMENT /* {>>text<<} */
|
|
23
|
+
} critic_type_t;
|
|
24
|
+
|
|
25
|
+
static critic_type_t scan_critic_markup(const char *input, int len, int *consumed,
|
|
26
|
+
const char **content, int *content_len,
|
|
27
|
+
const char **old_text, int *old_len) {
|
|
28
|
+
if (len < 6) return CRITIC_NONE; /* Minimum: {++x++} */
|
|
29
|
+
|
|
30
|
+
if (input[0] != '{') return CRITIC_NONE;
|
|
31
|
+
|
|
32
|
+
/* Check type */
|
|
33
|
+
critic_type_t type = CRITIC_NONE;
|
|
34
|
+
const char *close_marker = NULL;
|
|
35
|
+
|
|
36
|
+
if (input[1] == '+' && input[2] == '+') {
|
|
37
|
+
type = CRITIC_ADD;
|
|
38
|
+
close_marker = "++}";
|
|
39
|
+
} else if (input[1] == '-' && input[2] == '-') {
|
|
40
|
+
type = CRITIC_DEL;
|
|
41
|
+
close_marker = "--}";
|
|
42
|
+
} else if (input[1] == '~' && input[2] == '~') {
|
|
43
|
+
type = CRITIC_SUB;
|
|
44
|
+
close_marker = "~~}";
|
|
45
|
+
} else if (input[1] == '=' && input[2] == '=') {
|
|
46
|
+
type = CRITIC_HIGHLIGHT;
|
|
47
|
+
close_marker = "==}";
|
|
48
|
+
} else if (input[1] == '>' && input[2] == '>') {
|
|
49
|
+
type = CRITIC_COMMENT;
|
|
50
|
+
close_marker = "<<}";
|
|
51
|
+
} else {
|
|
52
|
+
return CRITIC_NONE;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
*content = input + 3; /* Skip opening marker */
|
|
56
|
+
|
|
57
|
+
/* Find closing marker */
|
|
58
|
+
const char *closer = strstr(*content, close_marker);
|
|
59
|
+
if (!closer) return CRITIC_NONE;
|
|
60
|
+
|
|
61
|
+
*content_len = closer - *content;
|
|
62
|
+
*consumed = (closer - input) + 3; /* Include closing marker */
|
|
63
|
+
|
|
64
|
+
/* For substitutions, split on ~> */
|
|
65
|
+
if (type == CRITIC_SUB) {
|
|
66
|
+
const char *sep = strstr(*content, "~>");
|
|
67
|
+
if (sep && sep < closer) {
|
|
68
|
+
*old_len = sep - *content;
|
|
69
|
+
*old_text = *content;
|
|
70
|
+
*content = sep + 2; /* Skip ~> */
|
|
71
|
+
*content_len = closer - *content;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return type;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Create HTML for critic markup based on mode
|
|
80
|
+
*/
|
|
81
|
+
static char *critic_to_html(critic_type_t type, const char *content, int content_len,
|
|
82
|
+
const char *old_text, int old_len, critic_mode_t mode) {
|
|
83
|
+
char *html = NULL;
|
|
84
|
+
size_t html_len = content_len + old_len + 200;
|
|
85
|
+
html = malloc(html_len);
|
|
86
|
+
if (!html) return NULL;
|
|
87
|
+
|
|
88
|
+
switch (mode) {
|
|
89
|
+
case CRITIC_ACCEPT:
|
|
90
|
+
/* Show only additions and new text in substitutions */
|
|
91
|
+
switch (type) {
|
|
92
|
+
case CRITIC_ADD:
|
|
93
|
+
snprintf(html, html_len, "%.*s", content_len, content);
|
|
94
|
+
break;
|
|
95
|
+
case CRITIC_SUB:
|
|
96
|
+
snprintf(html, html_len, "%.*s", content_len, content);
|
|
97
|
+
break;
|
|
98
|
+
case CRITIC_HIGHLIGHT:
|
|
99
|
+
/* Show highlight text without markup */
|
|
100
|
+
snprintf(html, html_len, "%.*s", content_len, content);
|
|
101
|
+
break;
|
|
102
|
+
case CRITIC_DEL:
|
|
103
|
+
case CRITIC_COMMENT:
|
|
104
|
+
html[0] = '\0'; /* Remove deletions and comments */
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
html[0] = '\0';
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
|
|
112
|
+
case CRITIC_REJECT:
|
|
113
|
+
/* Show only original text */
|
|
114
|
+
switch (type) {
|
|
115
|
+
case CRITIC_SUB:
|
|
116
|
+
if (old_text && old_len > 0) {
|
|
117
|
+
snprintf(html, html_len, "%.*s", old_len, old_text);
|
|
118
|
+
} else {
|
|
119
|
+
html[0] = '\0';
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
case CRITIC_DEL:
|
|
123
|
+
snprintf(html, html_len, "%.*s", content_len, content);
|
|
124
|
+
break;
|
|
125
|
+
case CRITIC_HIGHLIGHT:
|
|
126
|
+
/* Show highlight text without markup */
|
|
127
|
+
snprintf(html, html_len, "%.*s", content_len, content);
|
|
128
|
+
break;
|
|
129
|
+
case CRITIC_ADD:
|
|
130
|
+
case CRITIC_COMMENT:
|
|
131
|
+
html[0] = '\0'; /* Remove additions and comments */
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
134
|
+
html[0] = '\0';
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
|
|
139
|
+
case CRITIC_MARKUP:
|
|
140
|
+
/* Show markup with HTML classes */
|
|
141
|
+
switch (type) {
|
|
142
|
+
case CRITIC_ADD:
|
|
143
|
+
snprintf(html, html_len, "<ins class=\"critic\">%.*s</ins>", content_len, content);
|
|
144
|
+
break;
|
|
145
|
+
case CRITIC_DEL:
|
|
146
|
+
snprintf(html, html_len, "<del class=\"critic\">%.*s</del>", content_len, content);
|
|
147
|
+
break;
|
|
148
|
+
case CRITIC_SUB:
|
|
149
|
+
if (old_text && old_len > 0) {
|
|
150
|
+
snprintf(html, html_len,
|
|
151
|
+
"<del class=\"critic break\">%.*s</del><ins class=\"critic break\">%.*s</ins>",
|
|
152
|
+
old_len, old_text, content_len, content);
|
|
153
|
+
} else {
|
|
154
|
+
snprintf(html, html_len, "<ins class=\"critic\">%.*s</ins>", content_len, content);
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
case CRITIC_HIGHLIGHT:
|
|
158
|
+
snprintf(html, html_len, "<mark class=\"critic\">%.*s</mark>", content_len, content);
|
|
159
|
+
break;
|
|
160
|
+
case CRITIC_COMMENT:
|
|
161
|
+
snprintf(html, html_len, "<span class=\"critic comment\">%.*s</span>", content_len, content);
|
|
162
|
+
break;
|
|
163
|
+
default:
|
|
164
|
+
html[0] = '\0';
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return html;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Process Critic Markup in text nodes
|
|
175
|
+
*/
|
|
176
|
+
static void process_critic_in_text_node(cmark_node *node, critic_mode_t mode) {
|
|
177
|
+
const char *literal = cmark_node_get_literal(node);
|
|
178
|
+
if (!literal) return;
|
|
179
|
+
|
|
180
|
+
/* Look for critic markup - scan through entire string looking for { */
|
|
181
|
+
const char *search = literal;
|
|
182
|
+
const char *start = NULL;
|
|
183
|
+
|
|
184
|
+
while ((start = strchr(search, '{')) != NULL) {
|
|
185
|
+
/* Check if it's valid critic markup */
|
|
186
|
+
int consumed;
|
|
187
|
+
const char *content;
|
|
188
|
+
int content_len;
|
|
189
|
+
const char *old_text = NULL;
|
|
190
|
+
int old_len = 0;
|
|
191
|
+
|
|
192
|
+
critic_type_t type = scan_critic_markup(start, strlen(start), &consumed,
|
|
193
|
+
&content, &content_len, &old_text, &old_len);
|
|
194
|
+
|
|
195
|
+
if (type != CRITIC_NONE) {
|
|
196
|
+
/* Found valid critic markup */
|
|
197
|
+
size_t prefix_len = start - literal;
|
|
198
|
+
const char *suffix = start + consumed;
|
|
199
|
+
|
|
200
|
+
/* Generate HTML for the critic markup */
|
|
201
|
+
char *html = critic_to_html(type, content, content_len, old_text, old_len, mode);
|
|
202
|
+
if (!html) {
|
|
203
|
+
search = start + 1;
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Create prefix text node if there's text before the markup */
|
|
208
|
+
if (prefix_len > 0) {
|
|
209
|
+
char *prefix = malloc(prefix_len + 1);
|
|
210
|
+
if (prefix) {
|
|
211
|
+
memcpy(prefix, literal, prefix_len);
|
|
212
|
+
prefix[prefix_len] = '\0';
|
|
213
|
+
cmark_node_set_literal(node, prefix);
|
|
214
|
+
free(prefix);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* Create HTML inline node for the critic markup */
|
|
219
|
+
cmark_node *html_node = cmark_node_new(CMARK_NODE_HTML_INLINE);
|
|
220
|
+
cmark_node_set_literal(html_node, html);
|
|
221
|
+
free(html);
|
|
222
|
+
|
|
223
|
+
if (prefix_len > 0) {
|
|
224
|
+
/* Insert HTML after the prefix text node */
|
|
225
|
+
cmark_node_insert_after(node, html_node);
|
|
226
|
+
} else {
|
|
227
|
+
/* Replace the node entirely */
|
|
228
|
+
cmark_node_insert_before(node, html_node);
|
|
229
|
+
cmark_node_unlink(node);
|
|
230
|
+
cmark_node_free(node);
|
|
231
|
+
node = html_node; /* Continue from the new node */
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* If there's suffix, create new text node and process it */
|
|
235
|
+
if (*suffix) {
|
|
236
|
+
cmark_node *suffix_node = cmark_node_new(CMARK_NODE_TEXT);
|
|
237
|
+
cmark_node_set_literal(suffix_node, suffix);
|
|
238
|
+
cmark_node_insert_after(html_node, suffix_node);
|
|
239
|
+
|
|
240
|
+
/* Recursively process the suffix */
|
|
241
|
+
process_critic_in_text_node(suffix_node, mode);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
return; /* Done processing this node */
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* Not critic markup, continue searching */
|
|
248
|
+
search = start + 1;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Recursively process Critic Markup in AST
|
|
254
|
+
*/
|
|
255
|
+
void apex_process_critic_markup_in_tree(cmark_node *node, critic_mode_t mode) {
|
|
256
|
+
if (!node) return;
|
|
257
|
+
|
|
258
|
+
/* Process current node if it's text */
|
|
259
|
+
if (cmark_node_get_type(node) == CMARK_NODE_TEXT) {
|
|
260
|
+
process_critic_in_text_node(node, mode);
|
|
261
|
+
return; /* Don't recurse after modifying */
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* Recursively process children */
|
|
265
|
+
cmark_node *child = cmark_node_first_child(node);
|
|
266
|
+
while (child) {
|
|
267
|
+
cmark_node *next = cmark_node_next(child); /* Save next before potential modification */
|
|
268
|
+
apex_process_critic_markup_in_tree(child, mode);
|
|
269
|
+
child = next;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Process Critic Markup in raw text (preprocessing approach)
|
|
275
|
+
* This is better than postprocessing because it avoids smart typography interference
|
|
276
|
+
*/
|
|
277
|
+
char *apex_process_critic_markup_text(const char *text, critic_mode_t mode) {
|
|
278
|
+
if (!text) return NULL;
|
|
279
|
+
|
|
280
|
+
size_t len = strlen(text);
|
|
281
|
+
size_t output_capacity = len * 2; /* Generous estimate */
|
|
282
|
+
char *output = malloc(output_capacity);
|
|
283
|
+
if (!output) return NULL;
|
|
284
|
+
|
|
285
|
+
const char *read_pos = text;
|
|
286
|
+
char *write_pos = output;
|
|
287
|
+
size_t remaining_capacity = output_capacity;
|
|
288
|
+
|
|
289
|
+
while (*read_pos) {
|
|
290
|
+
/* Look for { */
|
|
291
|
+
if (*read_pos == '{') {
|
|
292
|
+
int consumed;
|
|
293
|
+
const char *content;
|
|
294
|
+
int content_len;
|
|
295
|
+
const char *old_text = NULL;
|
|
296
|
+
int old_len = 0;
|
|
297
|
+
|
|
298
|
+
critic_type_t type = scan_critic_markup(read_pos, strlen(read_pos), &consumed,
|
|
299
|
+
&content, &content_len, &old_text, &old_len);
|
|
300
|
+
|
|
301
|
+
if (type != CRITIC_NONE) {
|
|
302
|
+
/* Found valid critic markup - convert to HTML */
|
|
303
|
+
char *html = critic_to_html(type, content, content_len, old_text, old_len, mode);
|
|
304
|
+
if (html) {
|
|
305
|
+
size_t html_len = strlen(html);
|
|
306
|
+
if (html_len < remaining_capacity) {
|
|
307
|
+
memcpy(write_pos, html, html_len);
|
|
308
|
+
write_pos += html_len;
|
|
309
|
+
remaining_capacity -= html_len;
|
|
310
|
+
}
|
|
311
|
+
free(html);
|
|
312
|
+
}
|
|
313
|
+
read_pos += consumed;
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* Not critic markup, copy character */
|
|
319
|
+
if (remaining_capacity > 0) {
|
|
320
|
+
*write_pos++ = *read_pos;
|
|
321
|
+
remaining_capacity--;
|
|
322
|
+
}
|
|
323
|
+
read_pos++;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
*write_pos = '\0';
|
|
327
|
+
return output;
|
|
328
|
+
}
|
|
329
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Critic Markup Extension for Apex
|
|
3
|
+
*
|
|
4
|
+
* Supports CriticMarkup syntax for track changes:
|
|
5
|
+
* {++addition++} - added text
|
|
6
|
+
* {--deletion--} - deleted text
|
|
7
|
+
* {~~old~>new~~} - substitution
|
|
8
|
+
* {==highlight==} - highlighted text
|
|
9
|
+
* {>>comment<<} - comment/annotation
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#ifndef APEX_CRITIC_H
|
|
13
|
+
#define APEX_CRITIC_H
|
|
14
|
+
|
|
15
|
+
#include <stdbool.h>
|
|
16
|
+
#include "cmark-gfm.h"
|
|
17
|
+
#include "cmark-gfm-extension_api.h"
|
|
18
|
+
|
|
19
|
+
#ifdef __cplusplus
|
|
20
|
+
extern "C" {
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Critic Markup rendering mode
|
|
25
|
+
*/
|
|
26
|
+
typedef enum {
|
|
27
|
+
CRITIC_ACCEPT, /* Accept all changes */
|
|
28
|
+
CRITIC_REJECT, /* Reject all changes */
|
|
29
|
+
CRITIC_MARKUP /* Show markup with classes */
|
|
30
|
+
} critic_mode_t;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Process Critic Markup in an AST via postprocessing
|
|
34
|
+
*/
|
|
35
|
+
void apex_process_critic_markup_in_tree(cmark_node *document, critic_mode_t mode);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Process Critic Markup in raw text (preprocessing approach)
|
|
39
|
+
* Returns newly allocated string with critic markup converted to HTML
|
|
40
|
+
*/
|
|
41
|
+
char *apex_process_critic_markup_text(const char *text, critic_mode_t mode);
|
|
42
|
+
|
|
43
|
+
#ifdef __cplusplus
|
|
44
|
+
}
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
#endif /* APEX_CRITIC_H */
|
|
48
|
+
|