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,1603 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="UTF-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
<meta name="generator" content="Apex 0.1.49">
|
|
9
|
+
<title>Document</title>
|
|
10
|
+
<style>
|
|
11
|
+
body {
|
|
12
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
13
|
+
line-height: 1.6;
|
|
14
|
+
max-width: 800px;
|
|
15
|
+
margin: 2rem auto;
|
|
16
|
+
padding: 0 1rem;
|
|
17
|
+
color: #333;
|
|
18
|
+
}
|
|
19
|
+
pre { background: #f5f5f5; padding: 1rem; overflow-x: auto; }
|
|
20
|
+
code { background: #f0f0f0; padding: 0.2em 0.4em; border-radius: 3px; }
|
|
21
|
+
blockquote { border-left: 4px solid #ddd; margin: 0; padding-left: 1rem; color: #666; }
|
|
22
|
+
table { border-collapse: collapse; width: 100%%; }
|
|
23
|
+
th, td { border: 1px solid #ddd; padding: 0.5rem; }
|
|
24
|
+
th { background: #f5f5f5; }
|
|
25
|
+
tfoot td { background: #e8e8e8; }
|
|
26
|
+
figure.table-figure { width: fit-content; margin: 1em 0; }
|
|
27
|
+
figure.table-figure table { width: auto; }
|
|
28
|
+
figcaption { text-align: center; font-weight: bold; font-size: 0.8em; }
|
|
29
|
+
.page-break { page-break-after: always; }
|
|
30
|
+
.callout { padding: 1rem; margin: 1rem 0; border-left: 4px solid; }
|
|
31
|
+
.callout-note { border-color: #3b82f6; background: #eff6ff; }
|
|
32
|
+
.callout-warning { border-color: #f59e0b; background: #fffbeb; }
|
|
33
|
+
.callout-tip { border-color: #10b981; background: #f0fdf4; }
|
|
34
|
+
.callout-danger { border-color: #ef4444; background: #fef2f2; }
|
|
35
|
+
ins { background: #d4fcbc; text-decoration: none; }
|
|
36
|
+
del { background: #fbb6c2; text-decoration: line-through; }
|
|
37
|
+
mark { background: #fff3cd; }
|
|
38
|
+
.critic.comment { background: #e7e7e7; color: #666; font-style: italic; }
|
|
39
|
+
</style>
|
|
40
|
+
<style>
|
|
41
|
+
/* Base styles */
|
|
42
|
+
body {
|
|
43
|
+
-webkit-font-smoothing: antialiased;
|
|
44
|
+
-moz-osx-font-smoothing: grayscale;
|
|
45
|
+
font-size: 17px;
|
|
46
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
47
|
+
"Helvetica Neue", Arial, sans-serif;
|
|
48
|
+
line-height: 1.65;
|
|
49
|
+
color: #1e293b;
|
|
50
|
+
background-color: #fff;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Sidebar / Main TOC - wider on larger screens */
|
|
54
|
+
.main-toc,
|
|
55
|
+
.sidebar {
|
|
56
|
+
position: fixed;
|
|
57
|
+
left: 0;
|
|
58
|
+
top: 0;
|
|
59
|
+
width: auto;
|
|
60
|
+
min-width: 180px;
|
|
61
|
+
max-width: 250px;
|
|
62
|
+
height: 100vh;
|
|
63
|
+
overflow-y: auto;
|
|
64
|
+
background: #1e293b;
|
|
65
|
+
color: rgba(255, 255, 255, 0.9);
|
|
66
|
+
border-right: 2px solid rgba(255, 255, 255, 0.1);
|
|
67
|
+
padding: 24px 20px 130px;
|
|
68
|
+
font-size: 14px;
|
|
69
|
+
z-index: 100;
|
|
70
|
+
margin-right: 1rem;
|
|
71
|
+
box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
|
|
72
|
+
transition: transform 0.3s ease;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.main-toc ul,
|
|
76
|
+
.sidebar ul {
|
|
77
|
+
list-style: none;
|
|
78
|
+
padding-left: 0;
|
|
79
|
+
margin: 0;
|
|
80
|
+
padding-bottom: 80px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.main-toc ul::after,
|
|
84
|
+
.sidebar ul::after {
|
|
85
|
+
content: "";
|
|
86
|
+
display: block;
|
|
87
|
+
height: 80px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.main-toc li,
|
|
91
|
+
.sidebar li {
|
|
92
|
+
margin: 0.25em 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.main-toc a,
|
|
96
|
+
.sidebar a {
|
|
97
|
+
color: rgba(255, 255, 255, 0.85);
|
|
98
|
+
text-decoration: none;
|
|
99
|
+
display: block;
|
|
100
|
+
padding: 6px 12px;
|
|
101
|
+
border-radius: 4px;
|
|
102
|
+
transition: all 0.15s ease;
|
|
103
|
+
white-space: nowrap;
|
|
104
|
+
overflow: hidden;
|
|
105
|
+
text-overflow: ellipsis;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.main-toc a:hover,
|
|
109
|
+
.sidebar a:hover {
|
|
110
|
+
background: #334155;
|
|
111
|
+
color: #fff;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.sidebar a.active {
|
|
115
|
+
color: #0ea5e9;
|
|
116
|
+
font-weight: 500;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Body margin for sidebar */
|
|
120
|
+
body {
|
|
121
|
+
margin-left: 270px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Hamburger menu button */
|
|
125
|
+
.hamburger-menu {
|
|
126
|
+
display: none;
|
|
127
|
+
position: fixed;
|
|
128
|
+
top: 12px;
|
|
129
|
+
left: 12px;
|
|
130
|
+
z-index: 200;
|
|
131
|
+
background: #1e293b;
|
|
132
|
+
border: 2px solid rgba(255, 255, 255, 0.1);
|
|
133
|
+
border-radius: 6px;
|
|
134
|
+
padding: 10px;
|
|
135
|
+
cursor: pointer;
|
|
136
|
+
color: rgba(255, 255, 255, 0.9);
|
|
137
|
+
font-size: 20px;
|
|
138
|
+
line-height: 1;
|
|
139
|
+
width: 44px;
|
|
140
|
+
height: 44px;
|
|
141
|
+
align-items: center;
|
|
142
|
+
justify-content: center;
|
|
143
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
144
|
+
transition: all 0.2s ease;
|
|
145
|
+
opacity: 0.2;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.hamburger-menu:hover {
|
|
149
|
+
background: #334155;
|
|
150
|
+
color: #fff;
|
|
151
|
+
opacity: 1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* Move hamburger to the right of the sidebar when menu is open */
|
|
155
|
+
.hamburger-menu.active {
|
|
156
|
+
left: calc(
|
|
157
|
+
250px + 12px
|
|
158
|
+
); /* Position just to the right of sidebar (max-width 250px + 12px padding) */
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.hamburger-menu.active {
|
|
162
|
+
background: #0ea5e9;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.hamburger-menu::before {
|
|
166
|
+
content: "☰";
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.hamburger-menu.active::before {
|
|
170
|
+
content: "✕";
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* Mobile menu overlay */
|
|
174
|
+
.mobile-menu-overlay {
|
|
175
|
+
display: none;
|
|
176
|
+
position: fixed;
|
|
177
|
+
top: 0;
|
|
178
|
+
left: 0;
|
|
179
|
+
right: 0;
|
|
180
|
+
bottom: 0;
|
|
181
|
+
background: rgba(0, 0, 0, 0.5);
|
|
182
|
+
z-index: 150;
|
|
183
|
+
opacity: 0;
|
|
184
|
+
visibility: hidden;
|
|
185
|
+
transition: opacity 0.3s ease, visibility 0.3s ease;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.mobile-menu-overlay.active {
|
|
189
|
+
opacity: 1;
|
|
190
|
+
visibility: visible;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* Page TOC */
|
|
194
|
+
.page-toc {
|
|
195
|
+
background: #f9f9f9;
|
|
196
|
+
border: 1px solid #ddd;
|
|
197
|
+
border-radius: 4px;
|
|
198
|
+
padding: 1rem;
|
|
199
|
+
margin: 1.5rem 0;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.page-toc ul {
|
|
203
|
+
list-style: none;
|
|
204
|
+
padding-left: 0;
|
|
205
|
+
margin: 0;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.page-toc > ul {
|
|
209
|
+
padding-left: 0;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.page-toc li {
|
|
213
|
+
margin: 0.25em 0;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.page-toc a {
|
|
217
|
+
color: #0066cc;
|
|
218
|
+
text-decoration: none;
|
|
219
|
+
display: block;
|
|
220
|
+
padding: 0.25em 0.5em;
|
|
221
|
+
border-radius: 3px;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.page-toc a:hover {
|
|
225
|
+
background: #e0e0e0;
|
|
226
|
+
color: #004499;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.page-toc ul ul {
|
|
230
|
+
list-style: none;
|
|
231
|
+
padding-left: 1.5em;
|
|
232
|
+
margin-top: 0.25em;
|
|
233
|
+
margin-left: 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.page-toc ul ul ul {
|
|
237
|
+
padding-left: 1.5em;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.page-toc ul ul a {
|
|
241
|
+
font-size: 0.9em;
|
|
242
|
+
color: #555;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.page-toc ul ul ul a {
|
|
246
|
+
font-size: 0.85em;
|
|
247
|
+
color: #666;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Floating TOC */
|
|
251
|
+
.floating-toc {
|
|
252
|
+
position: fixed;
|
|
253
|
+
top: 0;
|
|
254
|
+
left: 270px;
|
|
255
|
+
right: 0;
|
|
256
|
+
z-index: 50;
|
|
257
|
+
opacity: 0;
|
|
258
|
+
visibility: hidden;
|
|
259
|
+
transition: opacity 0.2s ease, visibility 0.2s ease;
|
|
260
|
+
pointer-events: none;
|
|
261
|
+
display: flex;
|
|
262
|
+
justify-content: flex-end;
|
|
263
|
+
padding-right: 2rem;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.floating-toc.visible {
|
|
267
|
+
opacity: 1;
|
|
268
|
+
visibility: visible;
|
|
269
|
+
pointer-events: auto;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.floating-toc-container {
|
|
273
|
+
background: rgba(255, 255, 255, 0.95);
|
|
274
|
+
backdrop-filter: blur(10px);
|
|
275
|
+
border-bottom: 1px solid #ddd;
|
|
276
|
+
border-radius: 0 0 12px 12px;
|
|
277
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
278
|
+
width: fit-content;
|
|
279
|
+
max-width: 400px;
|
|
280
|
+
min-width: 200px;
|
|
281
|
+
overflow: hidden;
|
|
282
|
+
transition: max-height 0.3s ease;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.floating-toc-header {
|
|
286
|
+
padding: 8px 16px;
|
|
287
|
+
cursor: pointer;
|
|
288
|
+
user-select: none;
|
|
289
|
+
font-size: 14px;
|
|
290
|
+
font-weight: 500;
|
|
291
|
+
color: #1e293b;
|
|
292
|
+
display: flex;
|
|
293
|
+
align-items: center;
|
|
294
|
+
justify-content: space-between;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.floating-toc-header:hover {
|
|
298
|
+
background: rgba(0, 0, 0, 0.02);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.floating-toc-content {
|
|
302
|
+
max-height: 0;
|
|
303
|
+
overflow: hidden;
|
|
304
|
+
transition: max-height 0.3s ease;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.floating-toc-container:hover .floating-toc-content {
|
|
308
|
+
max-height: 70vh;
|
|
309
|
+
overflow-y: auto;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.floating-toc-content ul {
|
|
313
|
+
list-style: none;
|
|
314
|
+
padding: 8px 16px 16px;
|
|
315
|
+
margin: 0;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.floating-toc-content li {
|
|
319
|
+
margin: 0.1em 0;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.floating-toc-content a {
|
|
323
|
+
color: #0066cc;
|
|
324
|
+
text-decoration: none;
|
|
325
|
+
display: block;
|
|
326
|
+
padding: 0.2em 0.5em;
|
|
327
|
+
border-radius: 4px;
|
|
328
|
+
font-size: 13px;
|
|
329
|
+
transition: background 0.15s ease;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.floating-toc-content a:hover {
|
|
333
|
+
background: #e0e0e0;
|
|
334
|
+
color: #004499;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.floating-toc-content ul ul {
|
|
338
|
+
padding-left: 1.2em;
|
|
339
|
+
margin-top: 0;
|
|
340
|
+
margin-bottom: 0;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.floating-toc-content ul ul ul {
|
|
344
|
+
margin-top: 0;
|
|
345
|
+
margin-bottom: 0;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.floating-toc-content ul ul a {
|
|
349
|
+
font-size: 12px;
|
|
350
|
+
color: #555;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.floating-toc-content ul ul ul a {
|
|
354
|
+
font-size: 11px;
|
|
355
|
+
color: #666;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* Smooth scrolling */
|
|
359
|
+
html {
|
|
360
|
+
scroll-behavior: smooth;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/* Code blocks */
|
|
364
|
+
code {
|
|
365
|
+
background: #f0f0f0;
|
|
366
|
+
padding: 0.2em 0.4em;
|
|
367
|
+
border-radius: 3px;
|
|
368
|
+
font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
|
|
369
|
+
font-size: 0.9em;
|
|
370
|
+
margin: 0 0.1em;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
pre {
|
|
374
|
+
background: #f5f5f5;
|
|
375
|
+
padding: 1rem;
|
|
376
|
+
overflow-x: auto;
|
|
377
|
+
border-radius: 4px;
|
|
378
|
+
margin: 1em 0;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
pre code {
|
|
382
|
+
background: none;
|
|
383
|
+
padding: 0;
|
|
384
|
+
margin: 0;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* Rouge syntax highlighting - GitHub theme, scoped to .highlight containers */
|
|
388
|
+
.highlight {
|
|
389
|
+
color: #24292e;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.highlight .c {
|
|
393
|
+
color: #6a737d;
|
|
394
|
+
font-style: italic;
|
|
395
|
+
} /* Comment */
|
|
396
|
+
.highlight .err {
|
|
397
|
+
color: #a61717;
|
|
398
|
+
background-color: #e3d2d2;
|
|
399
|
+
} /* Error */
|
|
400
|
+
.highlight .k {
|
|
401
|
+
color: #d73a49;
|
|
402
|
+
font-weight: bold;
|
|
403
|
+
} /* Keyword */
|
|
404
|
+
.highlight .l {
|
|
405
|
+
color: #032f62;
|
|
406
|
+
} /* Literal */
|
|
407
|
+
.highlight .n {
|
|
408
|
+
color: #24292e;
|
|
409
|
+
} /* Name */
|
|
410
|
+
.highlight .o {
|
|
411
|
+
color: #d73a49;
|
|
412
|
+
} /* Operator */
|
|
413
|
+
.highlight .p {
|
|
414
|
+
color: #24292e;
|
|
415
|
+
} /* Punctuation */
|
|
416
|
+
.highlight .cm {
|
|
417
|
+
color: #6a737d;
|
|
418
|
+
font-style: italic;
|
|
419
|
+
} /* Comment.Multiline */
|
|
420
|
+
.highlight .cp {
|
|
421
|
+
color: #6a737d;
|
|
422
|
+
font-weight: bold;
|
|
423
|
+
} /* Comment.Preproc */
|
|
424
|
+
.highlight .c1 {
|
|
425
|
+
color: #6a737d;
|
|
426
|
+
font-style: italic;
|
|
427
|
+
} /* Comment.Single */
|
|
428
|
+
.highlight .cs {
|
|
429
|
+
color: #6a737d;
|
|
430
|
+
font-weight: bold;
|
|
431
|
+
font-style: italic;
|
|
432
|
+
} /* Comment.Special */
|
|
433
|
+
.highlight .gd {
|
|
434
|
+
color: #24292e;
|
|
435
|
+
background-color: #ffeef0;
|
|
436
|
+
} /* Generic.Deleted */
|
|
437
|
+
.highlight .ge {
|
|
438
|
+
color: #24292e;
|
|
439
|
+
font-style: italic;
|
|
440
|
+
} /* Generic.Emph */
|
|
441
|
+
.highlight .gr {
|
|
442
|
+
color: #aa0000;
|
|
443
|
+
} /* Generic.Error */
|
|
444
|
+
.highlight .gh {
|
|
445
|
+
color: #999999;
|
|
446
|
+
font-weight: bold;
|
|
447
|
+
} /* Generic.Heading */
|
|
448
|
+
.highlight .gi {
|
|
449
|
+
color: #24292e;
|
|
450
|
+
background-color: #f0fff4;
|
|
451
|
+
} /* Generic.Inserted */
|
|
452
|
+
.highlight .go {
|
|
453
|
+
color: #888888;
|
|
454
|
+
} /* Generic.Output */
|
|
455
|
+
.highlight .gp {
|
|
456
|
+
color: #555555;
|
|
457
|
+
} /* Generic.Prompt */
|
|
458
|
+
.highlight .gs {
|
|
459
|
+
font-weight: bold;
|
|
460
|
+
} /* Generic.Strong */
|
|
461
|
+
.highlight .gu {
|
|
462
|
+
color: #aaaaaa;
|
|
463
|
+
} /* Generic.Subheading */
|
|
464
|
+
.highlight .gt {
|
|
465
|
+
color: #aa0000;
|
|
466
|
+
} /* Generic.Traceback */
|
|
467
|
+
.highlight .kc {
|
|
468
|
+
color: #d73a49;
|
|
469
|
+
font-weight: bold;
|
|
470
|
+
} /* Keyword.Constant */
|
|
471
|
+
.highlight .kd {
|
|
472
|
+
color: #d73a49;
|
|
473
|
+
font-weight: bold;
|
|
474
|
+
} /* Keyword.Declaration */
|
|
475
|
+
.highlight .kn {
|
|
476
|
+
color: #d73a49;
|
|
477
|
+
font-weight: bold;
|
|
478
|
+
} /* Keyword.Namespace */
|
|
479
|
+
.highlight .kp {
|
|
480
|
+
color: #d73a49;
|
|
481
|
+
font-weight: bold;
|
|
482
|
+
} /* Keyword.Pseudo */
|
|
483
|
+
.highlight .kr {
|
|
484
|
+
color: #d73a49;
|
|
485
|
+
font-weight: bold;
|
|
486
|
+
} /* Keyword.Reserved */
|
|
487
|
+
.highlight .kt {
|
|
488
|
+
color: #d73a49;
|
|
489
|
+
font-weight: bold;
|
|
490
|
+
} /* Keyword.Type */
|
|
491
|
+
.highlight .ld {
|
|
492
|
+
color: #032f62;
|
|
493
|
+
} /* Literal.Date */
|
|
494
|
+
.highlight .m {
|
|
495
|
+
color: #005cc5;
|
|
496
|
+
} /* Literal.Number */
|
|
497
|
+
.highlight .s {
|
|
498
|
+
color: #032f62;
|
|
499
|
+
} /* Literal.String */
|
|
500
|
+
.highlight .na {
|
|
501
|
+
color: #6f42c1;
|
|
502
|
+
} /* Name.Attribute */
|
|
503
|
+
.highlight .nb {
|
|
504
|
+
color: #005cc5;
|
|
505
|
+
} /* Name.Builtin */
|
|
506
|
+
.highlight .nc {
|
|
507
|
+
color: #6f42c1;
|
|
508
|
+
font-weight: bold;
|
|
509
|
+
} /* Name.Class */
|
|
510
|
+
.highlight .no {
|
|
511
|
+
color: #005cc5;
|
|
512
|
+
} /* Name.Constant */
|
|
513
|
+
.highlight .nd {
|
|
514
|
+
color: #6f42c1;
|
|
515
|
+
font-weight: bold;
|
|
516
|
+
} /* Name.Decorator */
|
|
517
|
+
.highlight .ni {
|
|
518
|
+
color: #800080;
|
|
519
|
+
} /* Name.Entity */
|
|
520
|
+
.highlight .ne {
|
|
521
|
+
color: #990000;
|
|
522
|
+
font-weight: bold;
|
|
523
|
+
} /* Name.Exception */
|
|
524
|
+
.highlight .nf {
|
|
525
|
+
color: #6f42c1;
|
|
526
|
+
} /* Name.Function */
|
|
527
|
+
.highlight .nl {
|
|
528
|
+
color: #990000;
|
|
529
|
+
} /* Name.Label */
|
|
530
|
+
.highlight .nn {
|
|
531
|
+
color: #555555;
|
|
532
|
+
} /* Name.Namespace */
|
|
533
|
+
.highlight .nx {
|
|
534
|
+
color: #6f42c1;
|
|
535
|
+
} /* Name.Other */
|
|
536
|
+
.highlight .py {
|
|
537
|
+
color: #990000;
|
|
538
|
+
} /* Name.Property */
|
|
539
|
+
.highlight .nt {
|
|
540
|
+
color: #22863a;
|
|
541
|
+
} /* Name.Tag */
|
|
542
|
+
.highlight .nv {
|
|
543
|
+
color: #e36209;
|
|
544
|
+
} /* Name.Variable */
|
|
545
|
+
.highlight .ow {
|
|
546
|
+
color: #d73a49;
|
|
547
|
+
font-weight: bold;
|
|
548
|
+
} /* Operator.Word */
|
|
549
|
+
.highlight .w {
|
|
550
|
+
color: #bbbbbb;
|
|
551
|
+
} /* Text.Whitespace */
|
|
552
|
+
.highlight .mf {
|
|
553
|
+
color: #005cc5;
|
|
554
|
+
} /* Literal.Number.Float */
|
|
555
|
+
.highlight .mh {
|
|
556
|
+
color: #005cc5;
|
|
557
|
+
} /* Literal.Number.Hex */
|
|
558
|
+
.highlight .mi {
|
|
559
|
+
color: #005cc5;
|
|
560
|
+
} /* Literal.Number.Integer */
|
|
561
|
+
.highlight .mo {
|
|
562
|
+
color: #005cc5;
|
|
563
|
+
} /* Literal.Number.Oct */
|
|
564
|
+
.highlight .sb {
|
|
565
|
+
color: #032f62;
|
|
566
|
+
} /* Literal.String.Backtick */
|
|
567
|
+
.highlight .sc {
|
|
568
|
+
color: #032f62;
|
|
569
|
+
} /* Literal.String.Char */
|
|
570
|
+
.highlight .sd {
|
|
571
|
+
color: #032f62;
|
|
572
|
+
} /* Literal.String.Doc */
|
|
573
|
+
.highlight .s2 {
|
|
574
|
+
color: #032f62;
|
|
575
|
+
} /* Literal.String.Double */
|
|
576
|
+
.highlight .se {
|
|
577
|
+
color: #032f62;
|
|
578
|
+
} /* Literal.String.Escape */
|
|
579
|
+
.highlight .sh {
|
|
580
|
+
color: #032f62;
|
|
581
|
+
} /* Literal.String.Heredoc */
|
|
582
|
+
.highlight .si {
|
|
583
|
+
color: #032f62;
|
|
584
|
+
} /* Literal.String.Interpol */
|
|
585
|
+
.highlight .sx {
|
|
586
|
+
color: #032f62;
|
|
587
|
+
} /* Literal.String.Other */
|
|
588
|
+
.highlight .sr {
|
|
589
|
+
color: #22863a;
|
|
590
|
+
} /* Literal.String.Regex */
|
|
591
|
+
.highlight .s1 {
|
|
592
|
+
color: #032f62;
|
|
593
|
+
} /* Literal.String.Single */
|
|
594
|
+
.highlight .ss {
|
|
595
|
+
color: #032f62;
|
|
596
|
+
} /* Literal.String.Symbol */
|
|
597
|
+
.highlight .bp {
|
|
598
|
+
color: #005cc5;
|
|
599
|
+
} /* Name.Builtin.Pseudo */
|
|
600
|
+
.highlight .vc {
|
|
601
|
+
color: #e36209;
|
|
602
|
+
} /* Name.Variable.Class */
|
|
603
|
+
.highlight .vg {
|
|
604
|
+
color: #e36209;
|
|
605
|
+
} /* Name.Variable.Global */
|
|
606
|
+
.highlight .vi {
|
|
607
|
+
color: #e36209;
|
|
608
|
+
} /* Name.Variable.Instance */
|
|
609
|
+
.highlight .il {
|
|
610
|
+
color: #005cc5;
|
|
611
|
+
} /* Literal.Number.Integer.Long */
|
|
612
|
+
|
|
613
|
+
/* Additional Rouge token classes that may be used */
|
|
614
|
+
.highlight .token {
|
|
615
|
+
color: #5670a0;
|
|
616
|
+
}
|
|
617
|
+
.highlight .token.list {
|
|
618
|
+
color: #546e9f;
|
|
619
|
+
}
|
|
620
|
+
.highlight .token.punctuation {
|
|
621
|
+
color: #3e8dad;
|
|
622
|
+
}
|
|
623
|
+
.highlight .token.list.punctuation {
|
|
624
|
+
color: #e05b78;
|
|
625
|
+
}
|
|
626
|
+
.highlight .token.content {
|
|
627
|
+
padding: 0;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* Nested lists in page content */
|
|
631
|
+
ul ul,
|
|
632
|
+
ol ol,
|
|
633
|
+
ul ol,
|
|
634
|
+
ol ul {
|
|
635
|
+
padding-left: 1.5em;
|
|
636
|
+
margin-top: 0.25em;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/* Page footer */
|
|
640
|
+
.page-footer {
|
|
641
|
+
background: #f5f5f5;
|
|
642
|
+
border-top: 1px solid #ddd;
|
|
643
|
+
padding: 1.5rem;
|
|
644
|
+
margin-top: 3rem;
|
|
645
|
+
color: #666;
|
|
646
|
+
font-size: 0.9em;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
.page-footer p {
|
|
650
|
+
margin: 0.5em 0;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.page-footer a {
|
|
654
|
+
color: #0066cc;
|
|
655
|
+
text-decoration: none;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
.page-footer a:hover {
|
|
659
|
+
text-decoration: underline;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/* Mobile responsive */
|
|
663
|
+
@media (max-width: 768px) {
|
|
664
|
+
.hamburger-menu {
|
|
665
|
+
display: flex;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
.main-toc,
|
|
669
|
+
.sidebar {
|
|
670
|
+
transform: translateX(-100%);
|
|
671
|
+
z-index: 175;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
.main-toc.mobile-open,
|
|
675
|
+
.sidebar.mobile-open {
|
|
676
|
+
transform: translateX(0);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
body {
|
|
680
|
+
margin-left: 0;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
.floating-toc {
|
|
684
|
+
left: 0;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
</style></head>
|
|
689
|
+
|
|
690
|
+
<body>
|
|
691
|
+
<div class="floating-toc" id="floating-toc">
|
|
692
|
+
<div class="floating-toc-container">
|
|
693
|
+
<div class="floating-toc-header">
|
|
694
|
+
<span>Table of Contents 🔻</span>
|
|
695
|
+
</div>
|
|
696
|
+
<div class="floating-toc-content" id="floating-toc-content">
|
|
697
|
+
<!-- Content will be populated by JavaScript -->
|
|
698
|
+
</div>
|
|
699
|
+
</div>
|
|
700
|
+
</div>
|
|
701
|
+
|
|
702
|
+
<button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
|
|
703
|
+
<div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
|
|
704
|
+
|
|
705
|
+
<nav class="main-toc"><ul><li><a href="Home.html">Home</a></li><li><a href="Getting-Started.html">Getting Started</a></li><li><a href="Installation.html">Installation</a></li><li><a href="Usage.html">Usage</a></li><li><a href="Syntax.html">Syntax</a></li><li><a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a></li><li><a href="Modes.html">Modes</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Multi-File-Documents.html">Multi-file Documents</a></li><li><a href="Citations.html">Citations</a></li><li><a href="Metadata-Transforms.html">Metadata Transforms</a></li><li><a href="Pandoc-Integration.html">Integrating with Pandoc</a></li><li><a href="Header-IDs.html">Header IDs</a></li><li><a href="C-API.html">C API</a></li><li><a href="Xcode-Integration.html">Xcode Integration</a></li><li><a href="Examples.html">Examples</a></li><li><a href="Plugins.html">Plugins</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
|
|
706
|
+
|
|
707
|
+
<h1 id="configuration">
|
|
708
|
+
Configuration
|
|
709
|
+
</h1>
|
|
710
|
+
<nav class="page-toc" id="page-toc-top"><ul><li><a href="#configuration">Configuration</a><ul><li><a href="#configuration-sources">Configuration sources</a></li><li><a href="#global-config-file-configyml">Global config file: config.yml</a><ul><li><a href="#example-configyml">Example config.yml</a></li></ul></li><li><a href="#reusable-config-files-with-meta-file">Reusable config files with --meta-file</a><ul><li><a href="#example-project-config-project-defaultsyml">Example project config (project-defaults.yml)</a></li></ul></li><li><a href="#per-document-metadata">Per-document metadata</a><ul><li><a href="#yaml-front-matter-example">YAML front matter example</a></li><li><a href="#multimarkdown-metadata-example">MultiMarkdown metadata example</a></li></ul></li><li><a href="#precedence-and-merging">Precedence and merging</a></li><li><a href="#available-configuration-keys">Available configuration keys</a><ul><li><a href="#boolean-options">Boolean options</a></li><li><a href="#string-options">String options</a></li></ul></li><li><a href="#putting-it-all-together">Putting it all together</a></li></ul></li></ul></nav>
|
|
711
|
+
|
|
712
|
+
<p>
|
|
713
|
+
Apex offers a flexible configuration system so you can define defaults once and reuse them across many documents, while still allowing per-document and per-invocation overrides.
|
|
714
|
+
</p>
|
|
715
|
+
|
|
716
|
+
<p>
|
|
717
|
+
This page covers:
|
|
718
|
+
</p>
|
|
719
|
+
|
|
720
|
+
<ul>
|
|
721
|
+
|
|
722
|
+
<li>
|
|
723
|
+
Where configuration comes from
|
|
724
|
+
</li>
|
|
725
|
+
|
|
726
|
+
<li>
|
|
727
|
+
The global <code>config.yml</code> file (XDG-aware)
|
|
728
|
+
</li>
|
|
729
|
+
|
|
730
|
+
<li>
|
|
731
|
+
Using <code>--meta-file</code> with reusable config files
|
|
732
|
+
</li>
|
|
733
|
+
|
|
734
|
+
<li>
|
|
735
|
+
Per-document metadata (front matter)
|
|
736
|
+
</li>
|
|
737
|
+
|
|
738
|
+
<li>
|
|
739
|
+
Precedence rules between these sources
|
|
740
|
+
</li>
|
|
741
|
+
|
|
742
|
+
<li>
|
|
743
|
+
Available configuration keys and their possible values
|
|
744
|
+
</li>
|
|
745
|
+
|
|
746
|
+
</ul>
|
|
747
|
+
|
|
748
|
+
<hr />
|
|
749
|
+
<h2 id="configuration-sources">
|
|
750
|
+
Configuration sources
|
|
751
|
+
</h2>
|
|
752
|
+
|
|
753
|
+
<p>
|
|
754
|
+
Apex can read configuration from three main places:
|
|
755
|
+
</p>
|
|
756
|
+
|
|
757
|
+
<ol>
|
|
758
|
+
|
|
759
|
+
<li>
|
|
760
|
+
<strong> Global configuration file</strong>
|
|
761
|
+
<ul>
|
|
762
|
+
|
|
763
|
+
<li>
|
|
764
|
+
<code>$XDG_CONFIG_HOME/apex/config.yml</code> when <code>XDG_CONFIG_HOME</code> is set
|
|
765
|
+
</li>
|
|
766
|
+
|
|
767
|
+
<li>
|
|
768
|
+
<code>~/.config/apex/config.yml</code> when <code>XDG_CONFIG_HOME</code> is not set
|
|
769
|
+
</li>
|
|
770
|
+
|
|
771
|
+
<li>
|
|
772
|
+
Loaded <strong>automatically</strong> when present if you do <strong>not</strong> pass <code>--meta-file</code>
|
|
773
|
+
</li>
|
|
774
|
+
|
|
775
|
+
</ul>
|
|
776
|
+
|
|
777
|
+
</li>
|
|
778
|
+
|
|
779
|
+
<li>
|
|
780
|
+
<strong> External metadata files</strong>
|
|
781
|
+
<ul>
|
|
782
|
+
|
|
783
|
+
<li>
|
|
784
|
+
Any file you pass explicitly with <code>--meta-file FILE</code>
|
|
785
|
+
</li>
|
|
786
|
+
|
|
787
|
+
<li>
|
|
788
|
+
Shared configuration for multiple documents
|
|
789
|
+
</li>
|
|
790
|
+
|
|
791
|
+
</ul>
|
|
792
|
+
|
|
793
|
+
</li>
|
|
794
|
+
|
|
795
|
+
<li>
|
|
796
|
+
<strong> Per-document metadata</strong>
|
|
797
|
+
<ul>
|
|
798
|
+
|
|
799
|
+
<li>
|
|
800
|
+
YAML, MultiMarkdown, or Pandoc-style metadata at the top of the document
|
|
801
|
+
</li>
|
|
802
|
+
|
|
803
|
+
<li>
|
|
804
|
+
Used for settings that are specific to a single document
|
|
805
|
+
</li>
|
|
806
|
+
|
|
807
|
+
</ul>
|
|
808
|
+
|
|
809
|
+
</li>
|
|
810
|
+
|
|
811
|
+
</ol>
|
|
812
|
+
|
|
813
|
+
<p>
|
|
814
|
+
On top of all of these, you can always pass <strong>command-line flags</strong> such as <code>--mode</code>, <code>--pretty</code>, <code>--no-tables</code>, etc.
|
|
815
|
+
</p>
|
|
816
|
+
|
|
817
|
+
<hr />
|
|
818
|
+
<h2 id="global-config-file-configyml">
|
|
819
|
+
Global config file: <code>config.yml</code>
|
|
820
|
+
</h2>
|
|
821
|
+
|
|
822
|
+
<p>
|
|
823
|
+
When you run <code>apex</code> <strong>without</strong> an explicit <code>--meta-file</code>, Apex will check for a global configuration file named <code>config.yml</code> in an XDG-aware location:
|
|
824
|
+
</p>
|
|
825
|
+
|
|
826
|
+
<ul>
|
|
827
|
+
|
|
828
|
+
<li>
|
|
829
|
+
If <code>$XDG_CONFIG_HOME</code> is set:
|
|
830
|
+
<ul>
|
|
831
|
+
|
|
832
|
+
<li>
|
|
833
|
+
<code>$XDG_CONFIG_HOME/apex/config.yml</code>
|
|
834
|
+
</li>
|
|
835
|
+
|
|
836
|
+
</ul>
|
|
837
|
+
|
|
838
|
+
</li>
|
|
839
|
+
|
|
840
|
+
<li>
|
|
841
|
+
Otherwise:
|
|
842
|
+
<ul>
|
|
843
|
+
|
|
844
|
+
<li>
|
|
845
|
+
<code>~/.config/apex/config.yml</code>
|
|
846
|
+
</li>
|
|
847
|
+
|
|
848
|
+
</ul>
|
|
849
|
+
|
|
850
|
+
</li>
|
|
851
|
+
|
|
852
|
+
</ul>
|
|
853
|
+
|
|
854
|
+
<p>
|
|
855
|
+
If the file exists, Apex loads it <strong>as if you had passed it via <code>--meta-file</code></strong>, and merges its metadata with the document and any <code>--meta</code> command-line metadata using the normal precedence rules (see below).
|
|
856
|
+
</p>
|
|
857
|
+
|
|
858
|
+
<p>
|
|
859
|
+
This makes <code>config.yml</code> ideal for defining <strong>project‑agnostic defaults</strong>, such as:
|
|
860
|
+
</p>
|
|
861
|
+
|
|
862
|
+
<ul>
|
|
863
|
+
|
|
864
|
+
<li>
|
|
865
|
+
Default <code>mode</code> (e.g. <code>unified</code>, <code>gfm</code>, <code>mmd</code>)
|
|
866
|
+
</li>
|
|
867
|
+
|
|
868
|
+
<li>
|
|
869
|
+
Default <code>language</code> and <code>quoteslanguage</code>
|
|
870
|
+
</li>
|
|
871
|
+
|
|
872
|
+
<li>
|
|
873
|
+
Common feature flags (<code>pretty</code>, <code>standalone</code>, <code>indices</code>, <code>wikilinks</code>, etc.)
|
|
874
|
+
</li>
|
|
875
|
+
|
|
876
|
+
<li>
|
|
877
|
+
Default bibliography style for your writing workflow
|
|
878
|
+
</li>
|
|
879
|
+
|
|
880
|
+
</ul>
|
|
881
|
+
|
|
882
|
+
<h3 id="example-configyml">
|
|
883
|
+
Example <code>config.yml</code>
|
|
884
|
+
</h3>
|
|
885
|
+
|
|
886
|
+
<pre><code class="highlight language-yaml"><span class="nn">---</span>
|
|
887
|
+
<span class="c1"># Default processor mode and output style</span>
|
|
888
|
+
<span class="na">mode</span><span class="pi">:</span> <span class="s">unified</span>
|
|
889
|
+
<span class="na">standalone</span><span class="pi">:</span> <span class="kc">true</span>
|
|
890
|
+
<span class="na">pretty</span><span class="pi">:</span> <span class="kc">true</span>
|
|
891
|
+
|
|
892
|
+
<span class="c1"># Locale and quotation style</span>
|
|
893
|
+
<span class="na">language</span><span class="pi">:</span> <span class="s">en</span>
|
|
894
|
+
<span class="na">quoteslanguage</span><span class="pi">:</span> <span class="s">english</span>
|
|
895
|
+
|
|
896
|
+
<span class="c1"># Common feature flags</span>
|
|
897
|
+
<span class="na">autolink</span><span class="pi">:</span> <span class="kc">true</span>
|
|
898
|
+
<span class="na">includes</span><span class="pi">:</span> <span class="kc">true</span>
|
|
899
|
+
<span class="na">relaxed-tables</span><span class="pi">:</span> <span class="kc">true</span>
|
|
900
|
+
<span class="na">sup-sub</span><span class="pi">:</span> <span class="kc">true</span>
|
|
901
|
+
|
|
902
|
+
<span class="c1"># Index and bibliography defaults</span>
|
|
903
|
+
<span class="na">indices</span><span class="pi">:</span> <span class="kc">true</span>
|
|
904
|
+
<span class="na">group-index-by-letter</span><span class="pi">:</span> <span class="kc">true</span>
|
|
905
|
+
<span class="na">bibliography</span><span class="pi">:</span> <span class="s">references.bib</span>
|
|
906
|
+
<span class="na">csl</span><span class="pi">:</span> <span class="s">apa.csl</span>
|
|
907
|
+
<span class="nn">---</span>
|
|
908
|
+
</code></pre>
|
|
909
|
+
|
|
910
|
+
<p>
|
|
911
|
+
With this configuration in place, a simple command like:
|
|
912
|
+
</p>
|
|
913
|
+
|
|
914
|
+
<pre><code class="highlight language-bash">apex document.md
|
|
915
|
+
</code></pre>
|
|
916
|
+
|
|
917
|
+
<p>
|
|
918
|
+
will automatically use your global defaults. You can then override any of them with per-document metadata or CLI flags when needed.
|
|
919
|
+
</p>
|
|
920
|
+
|
|
921
|
+
<hr />
|
|
922
|
+
<h2 id="reusable-config-files-with-meta-file">
|
|
923
|
+
Reusable config files with <code>--meta-file</code>
|
|
924
|
+
</h2>
|
|
925
|
+
|
|
926
|
+
<p>
|
|
927
|
+
For <strong>project-specific</strong> or <strong>task-specific</strong> configurations, use <code>--meta-file</code> to point to a reusable metadata file:
|
|
928
|
+
</p>
|
|
929
|
+
|
|
930
|
+
<pre><code class="highlight language-bash">apex document.md <span class="nt">--meta-file</span> project-defaults.yml
|
|
931
|
+
</code></pre>
|
|
932
|
+
|
|
933
|
+
<p>
|
|
934
|
+
These files use the same metadata keys as <code>config.yml</code> and document front matter.
|
|
935
|
+
</p>
|
|
936
|
+
|
|
937
|
+
<h3 id="example-project-config-project-defaultsyml">
|
|
938
|
+
Example project config (<code>project-defaults.yml</code>)
|
|
939
|
+
</h3>
|
|
940
|
+
|
|
941
|
+
<pre><code class="highlight language-yaml"><span class="nn">---</span>
|
|
942
|
+
<span class="na">mode</span><span class="pi">:</span> <span class="s">unified</span>
|
|
943
|
+
<span class="na">standalone</span><span class="pi">:</span> <span class="kc">true</span>
|
|
944
|
+
<span class="na">pretty</span><span class="pi">:</span> <span class="kc">true</span>
|
|
945
|
+
|
|
946
|
+
<span class="c1"># Project-specific bibliography</span>
|
|
947
|
+
<span class="na">bibliography</span><span class="pi">:</span> <span class="s">project-refs.bib</span>
|
|
948
|
+
<span class="na">csl</span><span class="pi">:</span> <span class="s">chicago-note-bibliography.csl</span>
|
|
949
|
+
|
|
950
|
+
<span class="c1"># Enable wiki links and relaxed tables for this project</span>
|
|
951
|
+
<span class="na">wikilinks</span><span class="pi">:</span> <span class="kc">true</span>
|
|
952
|
+
<span class="na">relaxed-tables</span><span class="pi">:</span> <span class="kc">true</span>
|
|
953
|
+
<span class="nn">---</span>
|
|
954
|
+
</code></pre>
|
|
955
|
+
|
|
956
|
+
<p>
|
|
957
|
+
You can reuse the same <code>project-defaults.yml</code> for many documents:
|
|
958
|
+
</p>
|
|
959
|
+
|
|
960
|
+
<pre><code class="highlight language-bash">apex chapter1.md <span class="nt">--meta-file</span> project-defaults.yml
|
|
961
|
+
apex chapter2.md <span class="nt">--meta-file</span> project-defaults.yml
|
|
962
|
+
apex appendix.md <span class="nt">--meta-file</span> project-defaults.yml
|
|
963
|
+
</code></pre>
|
|
964
|
+
|
|
965
|
+
<p>
|
|
966
|
+
If a global <code>config.yml</code> is also present, the <strong>explicit</strong> <code>--meta-file</code> still participates as the “file metadata” layer; precedence is determined by the rules below.
|
|
967
|
+
</p>
|
|
968
|
+
|
|
969
|
+
<hr />
|
|
970
|
+
<h2 id="per-document-metadata">
|
|
971
|
+
Per-document metadata
|
|
972
|
+
</h2>
|
|
973
|
+
|
|
974
|
+
<p>
|
|
975
|
+
Each document can define its own metadata in YAML, MultiMarkdown, or Pandoc formats. Apex extracts this metadata <strong>before</strong> processing, merges it with any file/config metadata, and then applies it to options.
|
|
976
|
+
</p>
|
|
977
|
+
|
|
978
|
+
<h3 id="yaml-front-matter-example">
|
|
979
|
+
YAML front matter example
|
|
980
|
+
</h3>
|
|
981
|
+
|
|
982
|
+
<pre><code class="highlight language-markdown"><span class="nn">---</span>
|
|
983
|
+
<span class="na">title</span><span class="pi">:</span> <span class="s">My Research Paper</span>
|
|
984
|
+
<span class="na">author</span><span class="pi">:</span> <span class="s">Jane Doe</span>
|
|
985
|
+
<span class="na">mode</span><span class="pi">:</span> <span class="s">unified</span>
|
|
986
|
+
<span class="na">standalone</span><span class="pi">:</span> <span class="kc">true</span>
|
|
987
|
+
<span class="na">pretty</span><span class="pi">:</span> <span class="kc">true</span>
|
|
988
|
+
<span class="na">indices</span><span class="pi">:</span> <span class="kc">false</span>
|
|
989
|
+
<span class="na">wikilinks</span><span class="pi">:</span> <span class="kc">true</span>
|
|
990
|
+
<span class="na">bibliography</span><span class="pi">:</span> <span class="s">references.bib</span>
|
|
991
|
+
<span class="na">language</span><span class="pi">:</span> <span class="s">en</span>
|
|
992
|
+
<span class="na">quoteslanguage</span><span class="pi">:</span> <span class="s">english</span>
|
|
993
|
+
<span class="nn">---</span>
|
|
994
|
+
|
|
995
|
+
<span class="gh"># Introduction</span>
|
|
996
|
+
...
|
|
997
|
+
</code></pre>
|
|
998
|
+
|
|
999
|
+
<h3 id="multimarkdown-metadata-example">
|
|
1000
|
+
MultiMarkdown metadata example
|
|
1001
|
+
</h3>
|
|
1002
|
+
|
|
1003
|
+
<pre><code class="highlight language-markdown">Title: My Research Paper
|
|
1004
|
+
Author: Jane Doe
|
|
1005
|
+
Mode: unified
|
|
1006
|
+
Standalone: true
|
|
1007
|
+
Pretty: true
|
|
1008
|
+
Indices: false
|
|
1009
|
+
WikiLinks: true
|
|
1010
|
+
Bibliography: references.bib
|
|
1011
|
+
Language: en
|
|
1012
|
+
Quotes Language: english
|
|
1013
|
+
|
|
1014
|
+
<span class="gh"># Introduction</span>
|
|
1015
|
+
...
|
|
1016
|
+
</code></pre>
|
|
1017
|
+
|
|
1018
|
+
<p>
|
|
1019
|
+
Apex normalizes keys (case-insensitive, ignores spaces and dashes), so <code>Quotes Language</code>, <code>quoteslanguage</code>, and <code>quotes-language</code> are treated equivalently.
|
|
1020
|
+
</p>
|
|
1021
|
+
|
|
1022
|
+
<hr />
|
|
1023
|
+
<h2 id="precedence-and-merging">
|
|
1024
|
+
Precedence and merging
|
|
1025
|
+
</h2>
|
|
1026
|
+
|
|
1027
|
+
<p>
|
|
1028
|
+
When Apex builds the final configuration for a run, it merges all sources in this order:
|
|
1029
|
+
</p>
|
|
1030
|
+
|
|
1031
|
+
<ol>
|
|
1032
|
+
|
|
1033
|
+
<li>
|
|
1034
|
+
<strong> File metadata</strong> (lowest precedence)
|
|
1035
|
+
<ul>
|
|
1036
|
+
|
|
1037
|
+
<li>
|
|
1038
|
+
Global <code>config.yml</code> if present and no explicit <code>--meta-file</code> was given
|
|
1039
|
+
</li>
|
|
1040
|
+
|
|
1041
|
+
<li>
|
|
1042
|
+
Any metadata file provided via <code>--meta-file</code>
|
|
1043
|
+
</li>
|
|
1044
|
+
|
|
1045
|
+
</ul>
|
|
1046
|
+
|
|
1047
|
+
</li>
|
|
1048
|
+
|
|
1049
|
+
<li>
|
|
1050
|
+
<strong> Document metadata</strong>
|
|
1051
|
+
<ul>
|
|
1052
|
+
|
|
1053
|
+
<li>
|
|
1054
|
+
YAML/MultiMarkdown/Pandoc metadata inside the document
|
|
1055
|
+
</li>
|
|
1056
|
+
|
|
1057
|
+
</ul>
|
|
1058
|
+
|
|
1059
|
+
</li>
|
|
1060
|
+
|
|
1061
|
+
<li>
|
|
1062
|
+
<strong> Command-line metadata</strong>
|
|
1063
|
+
<ul>
|
|
1064
|
+
|
|
1065
|
+
<li>
|
|
1066
|
+
Values passed via <code>--meta KEY=VALUE</code>
|
|
1067
|
+
</li>
|
|
1068
|
+
|
|
1069
|
+
</ul>
|
|
1070
|
+
|
|
1071
|
+
</li>
|
|
1072
|
+
|
|
1073
|
+
<li>
|
|
1074
|
+
<strong> Command-line flags</strong>
|
|
1075
|
+
<ul>
|
|
1076
|
+
|
|
1077
|
+
<li>
|
|
1078
|
+
Flags like <code>--mode</code>, <code>--pretty</code>, <code>--no-tables</code>, etc.
|
|
1079
|
+
</li>
|
|
1080
|
+
|
|
1081
|
+
</ul>
|
|
1082
|
+
|
|
1083
|
+
</li>
|
|
1084
|
+
|
|
1085
|
+
</ol>
|
|
1086
|
+
|
|
1087
|
+
<p>
|
|
1088
|
+
Later sources override earlier ones. In practice:
|
|
1089
|
+
</p>
|
|
1090
|
+
|
|
1091
|
+
<ul>
|
|
1092
|
+
|
|
1093
|
+
<li>
|
|
1094
|
+
A document can <strong>override</strong> defaults from <code>config.yml</code> or <code>--meta-file</code>
|
|
1095
|
+
</li>
|
|
1096
|
+
|
|
1097
|
+
<li>
|
|
1098
|
+
<code>--meta</code> values can override both document and file metadata
|
|
1099
|
+
</li>
|
|
1100
|
+
|
|
1101
|
+
<li>
|
|
1102
|
+
Explicit CLI flags (<code>--mode gfm</code>, <code>--no-tables</code>, etc.) still behave as final overrides where applicable
|
|
1103
|
+
</li>
|
|
1104
|
+
|
|
1105
|
+
</ul>
|
|
1106
|
+
|
|
1107
|
+
<p>
|
|
1108
|
+
Note: if <code>mode</code> is specified in metadata (file or document), Apex <strong>resets options to that mode’s defaults</strong> before applying other metadata keys, so the mode behaves as if you had passed it on the command line first.
|
|
1109
|
+
</p>
|
|
1110
|
+
|
|
1111
|
+
<hr />
|
|
1112
|
+
<h2 id="available-configuration-keys">
|
|
1113
|
+
Available configuration keys
|
|
1114
|
+
</h2>
|
|
1115
|
+
|
|
1116
|
+
<p>
|
|
1117
|
+
Configuration keys correspond closely to Apex command-line options. Most options can be controlled via metadata in <code>config.yml</code>, <code>--meta-file</code> files, or per-document metadata.
|
|
1118
|
+
</p>
|
|
1119
|
+
|
|
1120
|
+
<h3 id="boolean-options">
|
|
1121
|
+
Boolean options
|
|
1122
|
+
</h3>
|
|
1123
|
+
|
|
1124
|
+
<p>
|
|
1125
|
+
Boolean keys accept any of the following values (case-insensitive):
|
|
1126
|
+
</p>
|
|
1127
|
+
|
|
1128
|
+
<ul>
|
|
1129
|
+
|
|
1130
|
+
<li>
|
|
1131
|
+
<code>true</code> / <code>false</code>
|
|
1132
|
+
</li>
|
|
1133
|
+
|
|
1134
|
+
<li>
|
|
1135
|
+
<code>yes</code> / <code>no</code>
|
|
1136
|
+
</li>
|
|
1137
|
+
|
|
1138
|
+
<li>
|
|
1139
|
+
<code>1</code> / <code>0</code>
|
|
1140
|
+
</li>
|
|
1141
|
+
|
|
1142
|
+
</ul>
|
|
1143
|
+
|
|
1144
|
+
<p>
|
|
1145
|
+
<strong> Supported boolean keys include:</strong>
|
|
1146
|
+
</p>
|
|
1147
|
+
|
|
1148
|
+
<ul>
|
|
1149
|
+
|
|
1150
|
+
<li>
|
|
1151
|
+
<code>indices</code> – Enable index processing
|
|
1152
|
+
</li>
|
|
1153
|
+
|
|
1154
|
+
<li>
|
|
1155
|
+
<code>wikilinks</code> – Enable wiki link syntax (<code>[[Page]]</code>)
|
|
1156
|
+
</li>
|
|
1157
|
+
|
|
1158
|
+
<li>
|
|
1159
|
+
<code>includes</code> – Enable file inclusion
|
|
1160
|
+
</li>
|
|
1161
|
+
|
|
1162
|
+
<li>
|
|
1163
|
+
<code>relaxed-tables</code> – Enable relaxed table parsing
|
|
1164
|
+
</li>
|
|
1165
|
+
|
|
1166
|
+
<li>
|
|
1167
|
+
<code>alpha-lists</code> – Enable alphabetic list markers
|
|
1168
|
+
</li>
|
|
1169
|
+
|
|
1170
|
+
<li>
|
|
1171
|
+
<code>mixed-lists</code> – Allow mixing list marker types at the same level
|
|
1172
|
+
</li>
|
|
1173
|
+
|
|
1174
|
+
<li>
|
|
1175
|
+
<code>sup-sub</code> – Enable MultiMarkdown-style superscript/subscript
|
|
1176
|
+
</li>
|
|
1177
|
+
|
|
1178
|
+
<li>
|
|
1179
|
+
<code>autolink</code> – Enable automatic URL/email linking
|
|
1180
|
+
</li>
|
|
1181
|
+
|
|
1182
|
+
<li>
|
|
1183
|
+
<code>transforms</code> – Enable metadata transforms (<code>[%key:transform]</code>)
|
|
1184
|
+
</li>
|
|
1185
|
+
|
|
1186
|
+
<li>
|
|
1187
|
+
<code>unsafe</code> – Allow raw HTML in output
|
|
1188
|
+
</li>
|
|
1189
|
+
|
|
1190
|
+
<li>
|
|
1191
|
+
<code>tables</code> – Enable/disable table support
|
|
1192
|
+
</li>
|
|
1193
|
+
|
|
1194
|
+
<li>
|
|
1195
|
+
<code>footnotes</code> – Enable/disable footnote support
|
|
1196
|
+
</li>
|
|
1197
|
+
|
|
1198
|
+
<li>
|
|
1199
|
+
<code>smart</code> – Enable/disable smart typography
|
|
1200
|
+
</li>
|
|
1201
|
+
|
|
1202
|
+
<li>
|
|
1203
|
+
<code>math</code> – Enable/disable math support
|
|
1204
|
+
</li>
|
|
1205
|
+
|
|
1206
|
+
<li>
|
|
1207
|
+
<code>ids</code> – Enable/disable automatic header IDs
|
|
1208
|
+
</li>
|
|
1209
|
+
|
|
1210
|
+
<li>
|
|
1211
|
+
<code>header-anchors</code> – Use <code><a></code> anchors instead of plain <code>id</code> attributes
|
|
1212
|
+
</li>
|
|
1213
|
+
|
|
1214
|
+
<li>
|
|
1215
|
+
<code>embed-images</code> – Enable base64 image embedding
|
|
1216
|
+
</li>
|
|
1217
|
+
|
|
1218
|
+
<li>
|
|
1219
|
+
<code>link-citations</code> – Link citations to bibliography entries
|
|
1220
|
+
</li>
|
|
1221
|
+
|
|
1222
|
+
<li>
|
|
1223
|
+
<code>show-tooltips</code> – Add tooltips to citations
|
|
1224
|
+
</li>
|
|
1225
|
+
|
|
1226
|
+
<li>
|
|
1227
|
+
<code>suppress-bibliography</code> – Suppress bibliography output
|
|
1228
|
+
</li>
|
|
1229
|
+
|
|
1230
|
+
<li>
|
|
1231
|
+
<code>suppress-index</code> – Suppress index output while still creating markers
|
|
1232
|
+
</li>
|
|
1233
|
+
|
|
1234
|
+
<li>
|
|
1235
|
+
<code>group-index-by-letter</code> – Group index entries alphabetically
|
|
1236
|
+
</li>
|
|
1237
|
+
|
|
1238
|
+
<li>
|
|
1239
|
+
<code>obfuscate-emails</code> – Hex-encode <code>mailto:</code> links and visible email addresses
|
|
1240
|
+
</li>
|
|
1241
|
+
|
|
1242
|
+
<li>
|
|
1243
|
+
<code>pretty</code> – Pretty-print HTML
|
|
1244
|
+
</li>
|
|
1245
|
+
|
|
1246
|
+
<li>
|
|
1247
|
+
<code>standalone</code> – Generate a full HTML document (<code><html></code>, <code><head></code>, <code><body></code>)
|
|
1248
|
+
</li>
|
|
1249
|
+
|
|
1250
|
+
<li>
|
|
1251
|
+
<code>hardbreaks</code> – Treat newlines as <code><br></code>
|
|
1252
|
+
</li>
|
|
1253
|
+
|
|
1254
|
+
<li>
|
|
1255
|
+
<code>plugins</code> – Enable plugin processing for this document (see <a href="Plugins.html">Plugins</a>)
|
|
1256
|
+
</li>
|
|
1257
|
+
|
|
1258
|
+
</ul>
|
|
1259
|
+
|
|
1260
|
+
<h3 id="string-options">
|
|
1261
|
+
String options
|
|
1262
|
+
</h3>
|
|
1263
|
+
|
|
1264
|
+
<p>
|
|
1265
|
+
String keys take a free-form string value (sometimes with a constrained set of options):
|
|
1266
|
+
</p>
|
|
1267
|
+
|
|
1268
|
+
<ul>
|
|
1269
|
+
|
|
1270
|
+
<li>
|
|
1271
|
+
<code>mode</code>
|
|
1272
|
+
<ul>
|
|
1273
|
+
|
|
1274
|
+
<li>
|
|
1275
|
+
Values: <code>commonmark</code>, <code>gfm</code>, <code>mmd</code>/<code>multimarkdown</code>, <code>kramdown</code>, <code>unified</code>
|
|
1276
|
+
</li>
|
|
1277
|
+
|
|
1278
|
+
</ul>
|
|
1279
|
+
|
|
1280
|
+
</li>
|
|
1281
|
+
|
|
1282
|
+
<li>
|
|
1283
|
+
<code>id-format</code>
|
|
1284
|
+
<ul>
|
|
1285
|
+
|
|
1286
|
+
<li>
|
|
1287
|
+
Values: <code>gfm</code>, <code>mmd</code>, <code>kramdown</code>
|
|
1288
|
+
</li>
|
|
1289
|
+
|
|
1290
|
+
</ul>
|
|
1291
|
+
|
|
1292
|
+
</li>
|
|
1293
|
+
|
|
1294
|
+
<li>
|
|
1295
|
+
<code>title</code>
|
|
1296
|
+
<ul>
|
|
1297
|
+
|
|
1298
|
+
<li>
|
|
1299
|
+
Document title (used especially in standalone mode)
|
|
1300
|
+
</li>
|
|
1301
|
+
|
|
1302
|
+
</ul>
|
|
1303
|
+
|
|
1304
|
+
</li>
|
|
1305
|
+
|
|
1306
|
+
<li>
|
|
1307
|
+
<code>style</code> / <code>css</code>
|
|
1308
|
+
<ul>
|
|
1309
|
+
|
|
1310
|
+
<li>
|
|
1311
|
+
Stylesheet path for standalone documents
|
|
1312
|
+
</li>
|
|
1313
|
+
|
|
1314
|
+
</ul>
|
|
1315
|
+
|
|
1316
|
+
</li>
|
|
1317
|
+
|
|
1318
|
+
<li>
|
|
1319
|
+
<code>base-dir</code>
|
|
1320
|
+
<ul>
|
|
1321
|
+
|
|
1322
|
+
<li>
|
|
1323
|
+
Base directory used for resolving relative paths (images, includes, etc.)
|
|
1324
|
+
</li>
|
|
1325
|
+
|
|
1326
|
+
</ul>
|
|
1327
|
+
|
|
1328
|
+
</li>
|
|
1329
|
+
|
|
1330
|
+
<li>
|
|
1331
|
+
<code>bibliography</code>
|
|
1332
|
+
<ul>
|
|
1333
|
+
|
|
1334
|
+
<li>
|
|
1335
|
+
Path to a bibliography file (<code>.bib</code>, <code>.json</code>, <code>.yml</code>, <code>.yaml</code>)
|
|
1336
|
+
</li>
|
|
1337
|
+
|
|
1338
|
+
</ul>
|
|
1339
|
+
|
|
1340
|
+
</li>
|
|
1341
|
+
|
|
1342
|
+
<li>
|
|
1343
|
+
<code>csl</code>
|
|
1344
|
+
<ul>
|
|
1345
|
+
|
|
1346
|
+
<li>
|
|
1347
|
+
Path to a CSL style file
|
|
1348
|
+
</li>
|
|
1349
|
+
|
|
1350
|
+
</ul>
|
|
1351
|
+
|
|
1352
|
+
</li>
|
|
1353
|
+
|
|
1354
|
+
<li>
|
|
1355
|
+
<code>language</code>
|
|
1356
|
+
<ul>
|
|
1357
|
+
|
|
1358
|
+
<li>
|
|
1359
|
+
BCP 47 or similar language tag (e.g. <code>en</code>, <code>en-US</code>, <code>fr</code>); sets the HTML <code>lang</code> attribute
|
|
1360
|
+
</li>
|
|
1361
|
+
|
|
1362
|
+
</ul>
|
|
1363
|
+
|
|
1364
|
+
</li>
|
|
1365
|
+
|
|
1366
|
+
<li>
|
|
1367
|
+
<code>quoteslanguage</code> / <code>Quotes Language</code>
|
|
1368
|
+
<ul>
|
|
1369
|
+
|
|
1370
|
+
<li>
|
|
1371
|
+
Human-readable language name used for quote styling (e.g. <code>english</code>, <code>french</code>, <code>german</code>)
|
|
1372
|
+
</li>
|
|
1373
|
+
|
|
1374
|
+
</ul>
|
|
1375
|
+
|
|
1376
|
+
</li>
|
|
1377
|
+
|
|
1378
|
+
</ul>
|
|
1379
|
+
|
|
1380
|
+
<p>
|
|
1381
|
+
You can also use arbitrary keys for your own templates and transforms; Apex simply passes them through to the metadata system so they can be referenced via <code>[%key]</code> and <code>[%key:transform]</code>.
|
|
1382
|
+
</p>
|
|
1383
|
+
|
|
1384
|
+
<hr />
|
|
1385
|
+
<h2 id="putting-it-all-together">
|
|
1386
|
+
Putting it all together
|
|
1387
|
+
</h2>
|
|
1388
|
+
|
|
1389
|
+
<p>
|
|
1390
|
+
A typical setup might look like this:
|
|
1391
|
+
</p>
|
|
1392
|
+
|
|
1393
|
+
<ol>
|
|
1394
|
+
|
|
1395
|
+
<li>
|
|
1396
|
+
<strong> Global defaults</strong> in <code>config.yml</code> for your overall writing style and locale.
|
|
1397
|
+
</li>
|
|
1398
|
+
|
|
1399
|
+
<li>
|
|
1400
|
+
<strong> Project config</strong> via <code>--meta-file project.yml</code> for bibliography and project-specific settings.
|
|
1401
|
+
</li>
|
|
1402
|
+
|
|
1403
|
+
<li>
|
|
1404
|
+
<strong> Per-document metadata</strong> for title, author, and any exceptions to the defaults.
|
|
1405
|
+
</li>
|
|
1406
|
+
|
|
1407
|
+
<li>
|
|
1408
|
+
Occasional <strong>CLI overrides</strong> for ad-hoc one-off changes (e.g. <code>--mode gfm</code> for a specific run).
|
|
1409
|
+
</li>
|
|
1410
|
+
|
|
1411
|
+
</ol>
|
|
1412
|
+
|
|
1413
|
+
<p>
|
|
1414
|
+
Because all three configuration layers use the same metadata keys, you can gradually refine behavior without repeating yourself:
|
|
1415
|
+
</p>
|
|
1416
|
+
|
|
1417
|
+
<ul>
|
|
1418
|
+
|
|
1419
|
+
<li>
|
|
1420
|
+
Put long‑lived, cross‑project settings in <code>config.yml</code>
|
|
1421
|
+
</li>
|
|
1422
|
+
|
|
1423
|
+
<li>
|
|
1424
|
+
Put project‑scoped settings in <code>--meta-file</code> configs
|
|
1425
|
+
</li>
|
|
1426
|
+
|
|
1427
|
+
<li>
|
|
1428
|
+
Put document‑specific settings in front matter
|
|
1429
|
+
</li>
|
|
1430
|
+
|
|
1431
|
+
</ul>
|
|
1432
|
+
|
|
1433
|
+
<p>
|
|
1434
|
+
For more examples of metadata usage and transforms, see <a href="Command-Line-Options#metadata-options">Metadata Options</a> and <a href="Metadata-Transforms.html">Metadata Transforms</a>.
|
|
1435
|
+
</p>
|
|
1436
|
+
|
|
1437
|
+
<script>
|
|
1438
|
+
// Hamburger menu functionality
|
|
1439
|
+
(function() {
|
|
1440
|
+
function initHamburgerMenu() {
|
|
1441
|
+
var hamburger = document.getElementById('hamburger-menu');
|
|
1442
|
+
var sidebar = document.querySelector('.main-toc, .sidebar');
|
|
1443
|
+
var overlay = document.getElementById('mobile-menu-overlay');
|
|
1444
|
+
|
|
1445
|
+
if (!hamburger || !sidebar) return;
|
|
1446
|
+
|
|
1447
|
+
function toggleMenu() {
|
|
1448
|
+
var isOpen = sidebar.classList.contains('mobile-open');
|
|
1449
|
+
if (isOpen) {
|
|
1450
|
+
sidebar.classList.remove('mobile-open');
|
|
1451
|
+
hamburger.classList.remove('active');
|
|
1452
|
+
if (overlay) overlay.classList.remove('active');
|
|
1453
|
+
} else {
|
|
1454
|
+
sidebar.classList.add('mobile-open');
|
|
1455
|
+
hamburger.classList.add('active');
|
|
1456
|
+
if (overlay) overlay.classList.add('active');
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
hamburger.addEventListener('click', function(e) {
|
|
1461
|
+
e.stopPropagation();
|
|
1462
|
+
toggleMenu();
|
|
1463
|
+
});
|
|
1464
|
+
|
|
1465
|
+
if (overlay) {
|
|
1466
|
+
overlay.addEventListener('click', function() {
|
|
1467
|
+
toggleMenu();
|
|
1468
|
+
});
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
// Close menu when clicking on a sidebar link (mobile only)
|
|
1472
|
+
if (window.innerWidth <= 768) {
|
|
1473
|
+
var sidebarLinks = sidebar.querySelectorAll('a');
|
|
1474
|
+
sidebarLinks.forEach(function(link) {
|
|
1475
|
+
link.addEventListener('click', function() {
|
|
1476
|
+
setTimeout(function() {
|
|
1477
|
+
sidebar.classList.remove('mobile-open');
|
|
1478
|
+
hamburger.classList.remove('active');
|
|
1479
|
+
if (overlay) overlay.classList.remove('active');
|
|
1480
|
+
}, 100);
|
|
1481
|
+
});
|
|
1482
|
+
});
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
// Close menu on window resize if going to desktop
|
|
1486
|
+
window.addEventListener('resize', function() {
|
|
1487
|
+
if (window.innerWidth > 768) {
|
|
1488
|
+
sidebar.classList.remove('mobile-open');
|
|
1489
|
+
hamburger.classList.remove('active');
|
|
1490
|
+
if (overlay) overlay.classList.remove('active');
|
|
1491
|
+
}
|
|
1492
|
+
});
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
// Initialize when DOM is ready
|
|
1496
|
+
if (document.readyState === 'loading') {
|
|
1497
|
+
document.addEventListener('DOMContentLoaded', initHamburgerMenu);
|
|
1498
|
+
} else {
|
|
1499
|
+
initHamburgerMenu();
|
|
1500
|
+
}
|
|
1501
|
+
})();
|
|
1502
|
+
|
|
1503
|
+
</script>
|
|
1504
|
+
<script>
|
|
1505
|
+
(function() {
|
|
1506
|
+
// Clone the page TOC for floating TOC
|
|
1507
|
+
function initFloatingTOC() {
|
|
1508
|
+
var pageTOC = document.getElementById('page-toc-top');
|
|
1509
|
+
var floatingTOCContent = document.getElementById('floating-toc-content');
|
|
1510
|
+
var floatingTOC = document.getElementById('floating-toc');
|
|
1511
|
+
|
|
1512
|
+
if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
|
|
1513
|
+
|
|
1514
|
+
// Clone the TOC structure
|
|
1515
|
+
var tocClone = pageTOC.cloneNode(true);
|
|
1516
|
+
tocClone.id = 'floating-toc-clone';
|
|
1517
|
+
floatingTOCContent.appendChild(tocClone);
|
|
1518
|
+
|
|
1519
|
+
// Update all links to use smooth scrolling
|
|
1520
|
+
var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
|
|
1521
|
+
allTOCLinks.forEach(function(link) {
|
|
1522
|
+
link.addEventListener('click', function(e) {
|
|
1523
|
+
var href = this.getAttribute('href');
|
|
1524
|
+
if (href && href.startsWith('#')) {
|
|
1525
|
+
e.preventDefault();
|
|
1526
|
+
var targetId = href.substring(1);
|
|
1527
|
+
var targetElement = document.getElementById(targetId);
|
|
1528
|
+
if (targetElement) {
|
|
1529
|
+
var offset = 20; // Offset from top
|
|
1530
|
+
|
|
1531
|
+
// Function to calculate absolute position from document top
|
|
1532
|
+
function getAbsoluteTop(element) {
|
|
1533
|
+
var top = 0;
|
|
1534
|
+
while (element) {
|
|
1535
|
+
top += element.offsetTop;
|
|
1536
|
+
element = element.offsetParent;
|
|
1537
|
+
}
|
|
1538
|
+
return top;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
var absoluteTop = getAbsoluteTop(targetElement);
|
|
1542
|
+
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
1543
|
+
var offsetPosition = absoluteTop - offset;
|
|
1544
|
+
|
|
1545
|
+
// Only scroll if we're not already at the target position
|
|
1546
|
+
if (Math.abs(scrollTop - offsetPosition) > 10) {
|
|
1547
|
+
window.scrollTo({
|
|
1548
|
+
top: Math.max(0, offsetPosition),
|
|
1549
|
+
behavior: 'smooth'
|
|
1550
|
+
});
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
// Update URL hash without triggering scroll
|
|
1554
|
+
if (history.pushState) {
|
|
1555
|
+
history.pushState(null, null, href);
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
}
|
|
1559
|
+
});
|
|
1560
|
+
});
|
|
1561
|
+
|
|
1562
|
+
// Handle scroll to show/hide floating TOC
|
|
1563
|
+
var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
|
|
1564
|
+
var tocBottom = tocTop + pageTOC.offsetHeight;
|
|
1565
|
+
|
|
1566
|
+
function updateFloatingTOC() {
|
|
1567
|
+
var scrollY = window.pageYOffset || document.documentElement.scrollTop;
|
|
1568
|
+
|
|
1569
|
+
if (scrollY > tocBottom) {
|
|
1570
|
+
floatingTOC.classList.add('visible');
|
|
1571
|
+
} else {
|
|
1572
|
+
floatingTOC.classList.remove('visible');
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
// Throttle scroll events
|
|
1577
|
+
var ticking = false;
|
|
1578
|
+
window.addEventListener('scroll', function() {
|
|
1579
|
+
if (!ticking) {
|
|
1580
|
+
window.requestAnimationFrame(function() {
|
|
1581
|
+
updateFloatingTOC();
|
|
1582
|
+
ticking = false;
|
|
1583
|
+
});
|
|
1584
|
+
ticking = true;
|
|
1585
|
+
}
|
|
1586
|
+
});
|
|
1587
|
+
|
|
1588
|
+
// Initial check
|
|
1589
|
+
updateFloatingTOC();
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
// Initialize when DOM is ready
|
|
1593
|
+
if (document.readyState === 'loading') {
|
|
1594
|
+
document.addEventListener('DOMContentLoaded', initFloatingTOC);
|
|
1595
|
+
} else {
|
|
1596
|
+
initFloatingTOC();
|
|
1597
|
+
}
|
|
1598
|
+
})();
|
|
1599
|
+
</script>
|
|
1600
|
+
<footer class="page-footer"><p>Copyright 2025 Brett Terpstra, All Rights Reserved | MIT License</p></footer></body>
|
|
1601
|
+
|
|
1602
|
+
</html>
|
|
1603
|
+
|