apex-ruby 1.0.29 → 1.0.31
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 +4 -4
- data/README.md +2 -8
- data/apex-ruby.gemspec +14 -3
- data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
- data/ext/apex_ext/apex_src/src/apex.c +64 -5
- data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
- data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
- data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
- data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
- data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
- data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
- data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
- data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
- data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
- data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
- data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
- data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
- data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
- data/ext/apex_ext/extconf.rb +31 -79
- data/lib/apex/version.rb +1 -1
- metadata +1 -470
- data/ext/apex_ext/apex_src/AGENTS.md +0 -41
- data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
- data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
- data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
- data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
- data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
- data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
- data/ext/apex_ext/apex_src/Info.plist.in +0 -27
- data/ext/apex_ext/apex_src/Package.swift +0 -192
- data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
- data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
- data/ext/apex_ext/apex_src/README.md +0 -536
- data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
- data/ext/apex_ext/apex_src/VERSION +0 -1
- data/ext/apex_ext/apex_src/apex-debug.log +0 -4
- data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
- data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
- data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
- data/ext/apex_ext/apex_src/apex.pc.in +0 -11
- data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
- data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
- data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
- data/ext/apex_ext/apex_src/cli/main.c +0 -4588
- data/ext/apex_ext/apex_src/debug.log +0 -7
- data/ext/apex_ext/apex_src/debug_test.sh +0 -22
- data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
- data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
- data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
- data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
- data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
- data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
- data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
- data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
- data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
- data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
- data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
- data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
- data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
- data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
- data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
- data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
- data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
- data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
- data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
- data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
- data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
- data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
- data/ext/apex_ext/apex_src/docs/index.md +0 -459
- data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
- data/ext/apex_ext/apex_src/documentation/README.md +0 -160
- data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
- data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
- data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
- data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
- data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
- data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
- data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
- data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
- data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
- data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
- data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
- 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/ApexCLI.docset/Contents/Info.plist +0 -22
- 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 +0 -914
- data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
- 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 +0 -772
- data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
- data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
- data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
- data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
- data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
- data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
- data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
- data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
- data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
- data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
- data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
- data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
- data/ext/apex_ext/apex_src/examples/example.html +0 -53
- data/ext/apex_ext/apex_src/examples/example.md +0 -85
- data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
- data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
- data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
- data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
- data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
- data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
- data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
- data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
- data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
- data/ext/apex_ext/apex_src/ial.html +0 -24
- 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/man/apex-config.5 +0 -455
- data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
- data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
- data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
- data/ext/apex_ext/apex_src/man/apex.1 +0 -583
- data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
- data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
- data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
- data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
- data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
- data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
- data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
- data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
- data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
- data/ext/apex_ext/apex_src/output.html +0 -87
- data/ext/apex_ext/apex_src/pages/index.md +0 -459
- data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
- data/ext/apex_ext/apex_src/src/_README.md +0 -413
- data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
- data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
- data/ext/apex_ext/apex_src/test.html +0 -103
- data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
- data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
- data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
- data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
- data/ext/apex_ext/apex_src/test_spm.sh +0 -107
- data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
- data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
- data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
- data/ext/apex_ext/apex_src/tests/README.md +0 -152
- data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
- data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
- data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
- data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
- data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
- data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
- data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
- data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
- data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
- data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
- data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
- data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
- data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
- data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
- data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
- data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
- data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
- data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
- data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
- data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
- data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
- data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
- data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
- data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
- data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
- data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
- data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
- data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
- data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
- data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
- data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
- data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
- data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
- data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
- data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
- data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
- data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
- data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
- data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
- data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
- data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
- data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
- data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
- data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
- data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
- data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
- data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
- data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
- data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
- data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
- data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
- data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
- data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
- data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
- data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
- data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
- data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
- data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
- data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
- data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
- data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
- data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
- data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
- data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
- data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
- data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
- data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
- data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
- data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
- data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
- data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
- data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
- data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
- data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
- data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
- data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
- data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
- data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
- data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
- data/ext/apex_ext/apex_src/tests.rb +0 -39
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +0 -38
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
- 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 +0 -38
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
- data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
- data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
- data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
- data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
- data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
- data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
- data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
- data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
- data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
- data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
- data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
- data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
- data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
- data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
- data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
- data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
- data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
- data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
- data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
- data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
- data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
- data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
- data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
- data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
- data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
- data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
- data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
- data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
- data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
- data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
- data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
- data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
- data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
- data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
- data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
|
@@ -1,2562 +0,0 @@
|
|
|
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 1.1.12">
|
|
9
|
-
<title>Document</title>
|
|
10
|
-
<style>
|
|
11
|
-
/* GitHub-style syntax highlighting for Pygments and Skylighting */
|
|
12
|
-
/* Don't apply background to wrapper when code highlighting is enabled - let default styles handle it */
|
|
13
|
-
.code-highlighted .highlight, .code-highlighted .sourceCode { background: inherit; border-radius: 6px; padding: 16px; overflow-x: auto; }
|
|
14
|
-
.highlight pre, .sourceCode pre { margin: 0; padding: 0; background: transparent; }
|
|
15
|
-
.highlight code, .sourceCode code { font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; line-height: 1.45; }
|
|
16
|
-
/* Pygments classes */
|
|
17
|
-
.highlight .k { color: #d73a49; font-weight: 600; } /* Keyword */
|
|
18
|
-
.highlight .kt { color: #d73a49; } /* Keyword.Type */
|
|
19
|
-
.highlight .kd { color: #d73a49; font-weight: 600; } /* Keyword.Declaration */
|
|
20
|
-
.highlight .kn { color: #d73a49; } /* Keyword.Namespace */
|
|
21
|
-
.highlight .kp { color: #d73a49; } /* Keyword.Pseudo */
|
|
22
|
-
.highlight .kr { color: #d73a49; font-weight: 600; } /* Keyword.Reserved */
|
|
23
|
-
.highlight .n { color: #6f42c1; } /* Name */
|
|
24
|
-
.highlight .na { color: #6f42c1; } /* Name.Attribute */
|
|
25
|
-
.highlight .nc { color: #6f42c1; font-weight: 600; } /* Name.Class */
|
|
26
|
-
.highlight .no { color: #005cc5; } /* Name.Constant */
|
|
27
|
-
.highlight .nd { color: #6f42c1; font-weight: 600; } /* Name.Decorator */
|
|
28
|
-
.highlight .ni { color: #800080; } /* Name.Entity */
|
|
29
|
-
.highlight .ne { color: #990000; font-weight: 600; } /* Name.Exception */
|
|
30
|
-
.highlight .nf { color: #6f42c1; font-weight: 600; } /* Name.Function */
|
|
31
|
-
.highlight .nl { color: #6f42c1; } /* Name.Label */
|
|
32
|
-
.highlight .nn { color: #555; } /* Name.Namespace */
|
|
33
|
-
.highlight .nt { color: #22863a; } /* Name.Tag */
|
|
34
|
-
.highlight .nv { color: #e36209; } /* Name.Variable */
|
|
35
|
-
.highlight .s { color: #032f62; } /* String */
|
|
36
|
-
.highlight .sb { color: #032f62; } /* String.Backtick */
|
|
37
|
-
.highlight .sc { color: #032f62; } /* String.Char */
|
|
38
|
-
.highlight .sd { color: #032f62; } /* String.Doc */
|
|
39
|
-
.highlight .s2 { color: #032f62; } /* String.Double */
|
|
40
|
-
.highlight .se { color: #032f62; } /* String.Escape */
|
|
41
|
-
.highlight .sh { color: #032f62; } /* String.Heredoc */
|
|
42
|
-
.highlight .si { color: #032f62; } /* String.Interpol */
|
|
43
|
-
.highlight .sx { color: #032f62; } /* String.Other */
|
|
44
|
-
.highlight .sr { color: #032f62; } /* String.Regex */
|
|
45
|
-
.highlight .s1 { color: #032f62; } /* String.Single */
|
|
46
|
-
.highlight .ss { color: #032f62; } /* String.Symbol */
|
|
47
|
-
.highlight .c { color: #6a737d; font-style: italic; } /* Comment */
|
|
48
|
-
.highlight .c1 { color: #6a737d; font-style: italic; } /* Comment.Single */
|
|
49
|
-
.highlight .cm { color: #6a737d; font-style: italic; } /* Comment.Multiline */
|
|
50
|
-
.highlight .cp { color: #6a737d; font-weight: 600; } /* Comment.Preproc */
|
|
51
|
-
.highlight .cs { color: #6a737d; font-weight: 600; font-style: italic; } /* Comment.Special */
|
|
52
|
-
.highlight .m { color: #005cc5; } /* Literal.Number */
|
|
53
|
-
.highlight .mb { color: #005cc5; } /* Literal.Number.Bin */
|
|
54
|
-
.highlight .mf { color: #005cc5; } /* Literal.Number.Float */
|
|
55
|
-
.highlight .mh { color: #005cc5; } /* Literal.Number.Hex */
|
|
56
|
-
.highlight .mi { color: #005cc5; } /* Literal.Number.Integer */
|
|
57
|
-
.highlight .il { color: #005cc5; } /* Literal.Number.Integer.Long */
|
|
58
|
-
.highlight .mo { color: #005cc5; } /* Literal.Number.Oct */
|
|
59
|
-
.highlight .o { color: #d73a49; } /* Operator */
|
|
60
|
-
.highlight .ow { color: #d73a49; } /* Operator.Word */
|
|
61
|
-
.highlight .p { color: #24292e; } /* Punctuation */
|
|
62
|
-
.highlight .w { color: #e1e4e8; } /* Text.Whitespace */
|
|
63
|
-
/* Skylighting classes */
|
|
64
|
-
.sourceCode .kw { color: #d73a49; font-weight: 600; } /* Keyword */
|
|
65
|
-
.sourceCode .dt { color: #6f42c1; } /* DataType */
|
|
66
|
-
.sourceCode .dv { color: #005cc5; } /* DecVal */
|
|
67
|
-
.sourceCode .bn { color: #005cc5; } /* BaseN */
|
|
68
|
-
.sourceCode .fl { color: #005cc5; } /* Float */
|
|
69
|
-
.sourceCode .ch { color: #032f62; } /* Char */
|
|
70
|
-
.sourceCode .st { color: #032f62; } /* String */
|
|
71
|
-
.sourceCode .co { color: #6a737d; font-style: italic; } /* Comment */
|
|
72
|
-
.sourceCode .ot { color: #22863a; } /* Other */
|
|
73
|
-
.sourceCode .al { color: #e36209; font-weight: 600; } /* Alert */
|
|
74
|
-
.sourceCode .fu { color: #6f42c1; font-weight: 600; } /* Function */
|
|
75
|
-
.sourceCode .re { color: #032f62; } /* RegionMarker */
|
|
76
|
-
.sourceCode .er { color: #d73a49; font-weight: 600; } /* Error */
|
|
77
|
-
.sourceCode .cf { color: #d73a49; font-weight: 600; } /* ControlFlow */
|
|
78
|
-
.sourceCode .op { color: #d73a49; } /* Operator */
|
|
79
|
-
.sourceCode .pp { color: #6a737d; } /* Preprocessor */
|
|
80
|
-
.sourceCode .at { color: #005cc5; } /* Attribute */
|
|
81
|
-
.sourceCode .do { color: #6a737d; font-style: italic; } /* Documentation */
|
|
82
|
-
.sourceCode .an { color: #6a737d; font-weight: 600; } /* Annotation */
|
|
83
|
-
.sourceCode .cv { color: #6a737d; font-weight: 600; font-style: italic; } /* CommentVar */
|
|
84
|
-
.sourceCode .in { color: #6a737d; } /* Information */
|
|
85
|
-
.sourceCode .wa { color: #e36209; font-weight: 600; } /* Warning */
|
|
86
|
-
.sourceCode .im { color: #d73a49; } /* Import */
|
|
87
|
-
.sourceCode .bu { color: #005cc5; } /* BuiltIn */
|
|
88
|
-
.sourceCode .ex { color: #6f42c1; } /* Extension */
|
|
89
|
-
.sourceCode .va { color: #e36209; } /* Variable */
|
|
90
|
-
.sourceCode .ss { color: #032f62; } /* SpecialString */
|
|
91
|
-
.sourceCode .sc { color: #032f62; } /* SpecialChar */
|
|
92
|
-
.sourceCode .vs { color: #032f62; } /* VerbatimString */
|
|
93
|
-
.sourceCode .il { color: #005cc5; } /* Special */
|
|
94
|
-
/* Line numbers (Skylighting) */
|
|
95
|
-
.sourceCode.numberSource .sourceCode { counter-reset: line; }
|
|
96
|
-
.sourceCode.numberSource .sourceCode > span { position: relative; left: -4em; counter-increment: line; }
|
|
97
|
-
.sourceCode.numberSource .sourceCode > span > a:first-child::before { content: counter(line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; min-width: 1em; padding-right: 0.5em; color: #aaa; }
|
|
98
|
-
</style>
|
|
99
|
-
<style>
|
|
100
|
-
body {
|
|
101
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
102
|
-
line-height: 1.6;
|
|
103
|
-
max-width: 800px;
|
|
104
|
-
margin: 2rem auto;
|
|
105
|
-
padding: 0 1rem;
|
|
106
|
-
color: #333;
|
|
107
|
-
}
|
|
108
|
-
pre { background: #f5f5f5; padding: 1rem; overflow-x: auto; }
|
|
109
|
-
code { background: #f0f0f0; padding: 0.2em 0.4em; border-radius: 3px; }
|
|
110
|
-
blockquote { border-left: 4px solid #ddd; margin: 0; padding-left: 1rem; color: #666; }
|
|
111
|
-
table { border-collapse: collapse; width: 100%%; }
|
|
112
|
-
th, td { border: 1px solid #ddd; padding: 0.5rem; }
|
|
113
|
-
th { background: #f5f5f5; }
|
|
114
|
-
tfoot td { background: #e8e8e8; }
|
|
115
|
-
figure.table-figure { width: fit-content; margin: 1em 0; }
|
|
116
|
-
figure.table-figure table { width: auto; }
|
|
117
|
-
figcaption { text-align: center; font-weight: bold; font-size: 0.8em; }
|
|
118
|
-
.page-break { page-break-after: always; }
|
|
119
|
-
.callout { padding: 1rem; margin: 1rem 0; border-left: 4px solid; }
|
|
120
|
-
.callout-note { border-color: #3b82f6; background: #eff6ff; }
|
|
121
|
-
.callout-warning { border-color: #f59e0b; background: #fffbeb; }
|
|
122
|
-
.callout-tip { border-color: #10b981; background: #f0fdf4; }
|
|
123
|
-
.callout-danger { border-color: #ef4444; background: #fef2f2; }
|
|
124
|
-
ins { background: #d4fcbc; text-decoration: none; }
|
|
125
|
-
del { background: #fbb6c2; text-decoration: line-through; }
|
|
126
|
-
mark { background: #fff3cd; }
|
|
127
|
-
.smallcaps { font-variant: small-caps; }
|
|
128
|
-
.underline { text-decoration: underline; }
|
|
129
|
-
span.mark { background: #fff3cd; }
|
|
130
|
-
.hidden { display: none; }
|
|
131
|
-
.quarto-xref { font-variant: normal; }
|
|
132
|
-
.critic.comment { background: #e7e7e7; color: #666; font-style: italic; }
|
|
133
|
-
.mkhashtag { color: #666; }
|
|
134
|
-
.mkstyledtag {
|
|
135
|
-
display: inline-block;
|
|
136
|
-
background: #e0e0e0;
|
|
137
|
-
padding: 3px 9px;
|
|
138
|
-
border-radius: 20px;
|
|
139
|
-
font-size: 0.9em;
|
|
140
|
-
line-height: 1.4;
|
|
141
|
-
color: #333;
|
|
142
|
-
margin: 0 2px;
|
|
143
|
-
}
|
|
144
|
-
</style>
|
|
145
|
-
<meta name="paginate" content="symbols"/>
|
|
146
|
-
<meta name="highlight-language-only" content="true"/>
|
|
147
|
-
<meta name="code-line-numbers" content="false"/>
|
|
148
|
-
<meta name="code-highlight" content="pygments"/>
|
|
149
|
-
<meta name="sup-sub" content="true"/>
|
|
150
|
-
<meta name="relaxed-tables" content="true"/>
|
|
151
|
-
<meta name="includes" content="true"/>
|
|
152
|
-
<meta name="autolink" content="true"/>
|
|
153
|
-
<meta name="pretty" content="false"/>
|
|
154
|
-
<meta name="standalone" content="false"/>
|
|
155
|
-
<meta name="mode" content="unified"/>
|
|
156
|
-
<meta name="markdown-in-html" content="true"/>
|
|
157
|
-
<meta name="image-captions" content="true"/>
|
|
158
|
-
<meta name="wikilink-extension" content="html"/>
|
|
159
|
-
<meta name="wikilink-space" content="hyphen"/>
|
|
160
|
-
<meta name="wikilinks" content="true"/>
|
|
161
|
-
<meta name="widont" content="true"/>
|
|
162
|
-
<meta name="plugins" content="true"/>
|
|
163
|
-
<meta name="id-format" content="gfm"/>
|
|
164
|
-
|
|
165
|
-
<style>
|
|
166
|
-
:root {
|
|
167
|
-
/* border-box width of the fixed sidebar; body offset includes a small gap */
|
|
168
|
-
--sidebar-width: 250px;
|
|
169
|
-
--sidebar-offset: 270px;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/* Base styles — override Apex standalone centering (max-width + margin: auto) */
|
|
173
|
-
body {
|
|
174
|
-
-webkit-font-smoothing: antialiased;
|
|
175
|
-
-moz-osx-font-smoothing: grayscale;
|
|
176
|
-
font-size: 17px;
|
|
177
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
178
|
-
"Helvetica Neue", Arial, sans-serif;
|
|
179
|
-
line-height: 1.65;
|
|
180
|
-
color: #1e293b;
|
|
181
|
-
background-color: #fff;
|
|
182
|
-
max-width: none;
|
|
183
|
-
width: auto;
|
|
184
|
-
margin: 2rem 2rem 2rem var(--sidebar-offset);
|
|
185
|
-
padding: 0 1rem;
|
|
186
|
-
box-sizing: border-box;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/* Sidebar / Main TOC - wider on larger screens */
|
|
190
|
-
.main-toc,
|
|
191
|
-
.sidebar {
|
|
192
|
-
position: fixed;
|
|
193
|
-
left: 0;
|
|
194
|
-
top: 0;
|
|
195
|
-
box-sizing: border-box;
|
|
196
|
-
width: var(--sidebar-width);
|
|
197
|
-
min-width: var(--sidebar-width);
|
|
198
|
-
max-width: var(--sidebar-width);
|
|
199
|
-
height: 100vh;
|
|
200
|
-
overflow-y: auto;
|
|
201
|
-
background: #1e293b;
|
|
202
|
-
color: rgba(255, 255, 255, 0.9);
|
|
203
|
-
border-right: 2px solid rgba(255, 255, 255, 0.1);
|
|
204
|
-
padding: 24px 20px 130px;
|
|
205
|
-
font-size: 14px;
|
|
206
|
-
z-index: 100;
|
|
207
|
-
box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
|
|
208
|
-
transition: transform 0.3s ease;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.main-toc ul,
|
|
212
|
-
.sidebar ul {
|
|
213
|
-
list-style: none;
|
|
214
|
-
padding-left: 0;
|
|
215
|
-
margin: 0;
|
|
216
|
-
padding-bottom: 80px;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.main-toc ul::after,
|
|
220
|
-
.sidebar ul::after {
|
|
221
|
-
content: "";
|
|
222
|
-
display: block;
|
|
223
|
-
height: 80px;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
.main-toc li,
|
|
227
|
-
.sidebar li {
|
|
228
|
-
margin: 0.25em 0;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
.main-toc a,
|
|
232
|
-
.sidebar a {
|
|
233
|
-
color: rgba(255, 255, 255, 0.85);
|
|
234
|
-
text-decoration: none;
|
|
235
|
-
display: block;
|
|
236
|
-
padding: 6px 12px;
|
|
237
|
-
border-radius: 4px;
|
|
238
|
-
transition: all 0.15s ease;
|
|
239
|
-
white-space: nowrap;
|
|
240
|
-
overflow: hidden;
|
|
241
|
-
text-overflow: ellipsis;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
.main-toc a:hover,
|
|
245
|
-
.sidebar a:hover {
|
|
246
|
-
background: #334155;
|
|
247
|
-
color: #fff;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.sidebar a.active {
|
|
251
|
-
color: #0ea5e9;
|
|
252
|
-
font-weight: 500;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/* Hamburger menu button */
|
|
256
|
-
.hamburger-menu {
|
|
257
|
-
display: none;
|
|
258
|
-
position: fixed;
|
|
259
|
-
top: 12px;
|
|
260
|
-
left: 12px;
|
|
261
|
-
z-index: 200;
|
|
262
|
-
background: #1e293b;
|
|
263
|
-
border: 2px solid rgba(255, 255, 255, 0.1);
|
|
264
|
-
border-radius: 6px;
|
|
265
|
-
padding: 10px;
|
|
266
|
-
cursor: pointer;
|
|
267
|
-
color: rgba(255, 255, 255, 0.9);
|
|
268
|
-
font-size: 20px;
|
|
269
|
-
line-height: 1;
|
|
270
|
-
box-sizing: border-box;
|
|
271
|
-
width: 44px;
|
|
272
|
-
height: 44px;
|
|
273
|
-
align-items: center;
|
|
274
|
-
justify-content: center;
|
|
275
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
276
|
-
transition: all 0.2s ease;
|
|
277
|
-
opacity: 0.2;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.hamburger-menu:hover {
|
|
281
|
-
background: #334155;
|
|
282
|
-
color: #fff;
|
|
283
|
-
opacity: 1;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/* Move hamburger to the right of the sidebar when menu is open */
|
|
287
|
-
.hamburger-menu.active {
|
|
288
|
-
left: calc(var(--sidebar-width) + 12px);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.hamburger-menu.active {
|
|
292
|
-
background: #0ea5e9;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.hamburger-menu::before {
|
|
296
|
-
content: "☰";
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
.hamburger-menu.active::before {
|
|
300
|
-
content: "✕";
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/* Mobile menu overlay */
|
|
304
|
-
.mobile-menu-overlay {
|
|
305
|
-
display: none;
|
|
306
|
-
position: fixed;
|
|
307
|
-
top: 0;
|
|
308
|
-
left: 0;
|
|
309
|
-
right: 0;
|
|
310
|
-
bottom: 0;
|
|
311
|
-
background: rgba(0, 0, 0, 0.5);
|
|
312
|
-
z-index: 150;
|
|
313
|
-
opacity: 0;
|
|
314
|
-
visibility: hidden;
|
|
315
|
-
transition: opacity 0.3s ease, visibility 0.3s ease;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.mobile-menu-overlay.active {
|
|
319
|
-
opacity: 1;
|
|
320
|
-
visibility: visible;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/* Page TOC */
|
|
324
|
-
.page-toc {
|
|
325
|
-
background: #f9f9f9;
|
|
326
|
-
border: 1px solid #ddd;
|
|
327
|
-
border-radius: 4px;
|
|
328
|
-
padding: 1rem;
|
|
329
|
-
margin: 1.5rem 0;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
.page-toc ul {
|
|
333
|
-
list-style: none;
|
|
334
|
-
padding-left: 0;
|
|
335
|
-
margin: 0;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.page-toc > ul {
|
|
339
|
-
padding-left: 0;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.page-toc li {
|
|
343
|
-
margin: 0.25em 0;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
.page-toc a {
|
|
347
|
-
color: #0066cc;
|
|
348
|
-
text-decoration: none;
|
|
349
|
-
display: block;
|
|
350
|
-
padding: 0.25em 0.5em;
|
|
351
|
-
border-radius: 3px;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
.page-toc a:hover {
|
|
355
|
-
background: #e0e0e0;
|
|
356
|
-
color: #004499;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
.page-toc ul ul {
|
|
360
|
-
list-style: none;
|
|
361
|
-
padding-left: 1.5em;
|
|
362
|
-
margin-top: 0.25em;
|
|
363
|
-
margin-left: 0;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.page-toc ul ul ul {
|
|
367
|
-
padding-left: 1.5em;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
.page-toc ul ul a {
|
|
371
|
-
font-size: 0.9em;
|
|
372
|
-
color: #555;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
.page-toc ul ul ul a {
|
|
376
|
-
font-size: 0.85em;
|
|
377
|
-
color: #666;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
/* Floating TOC */
|
|
381
|
-
.floating-toc {
|
|
382
|
-
position: fixed;
|
|
383
|
-
top: 0;
|
|
384
|
-
left: var(--sidebar-offset);
|
|
385
|
-
right: 0;
|
|
386
|
-
z-index: 50;
|
|
387
|
-
opacity: 0;
|
|
388
|
-
visibility: hidden;
|
|
389
|
-
transition: opacity 0.2s ease, visibility 0.2s ease;
|
|
390
|
-
pointer-events: none;
|
|
391
|
-
display: flex;
|
|
392
|
-
justify-content: flex-end;
|
|
393
|
-
padding-right: 2rem;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
.floating-toc.visible {
|
|
397
|
-
opacity: 1;
|
|
398
|
-
visibility: visible;
|
|
399
|
-
pointer-events: auto;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
.floating-toc-container {
|
|
403
|
-
background: rgba(255, 255, 255, 0.95);
|
|
404
|
-
backdrop-filter: blur(10px);
|
|
405
|
-
border-bottom: 1px solid #ddd;
|
|
406
|
-
border-radius: 0 0 12px 12px;
|
|
407
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
408
|
-
width: fit-content;
|
|
409
|
-
max-width: 400px;
|
|
410
|
-
min-width: 200px;
|
|
411
|
-
overflow: hidden;
|
|
412
|
-
transition: max-height 0.3s ease;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
.floating-toc-header {
|
|
416
|
-
padding: 8px 16px;
|
|
417
|
-
cursor: pointer;
|
|
418
|
-
user-select: none;
|
|
419
|
-
font-size: 14px;
|
|
420
|
-
font-weight: 500;
|
|
421
|
-
color: #1e293b;
|
|
422
|
-
display: flex;
|
|
423
|
-
align-items: center;
|
|
424
|
-
justify-content: space-between;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
.floating-toc-header:hover {
|
|
428
|
-
background: rgba(0, 0, 0, 0.02);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
.floating-toc-content {
|
|
432
|
-
max-height: 0;
|
|
433
|
-
overflow: hidden;
|
|
434
|
-
transition: max-height 0.3s ease;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
.floating-toc-container:hover .floating-toc-content {
|
|
438
|
-
max-height: 70vh;
|
|
439
|
-
overflow-y: auto;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
.floating-toc-content ul {
|
|
443
|
-
list-style: none;
|
|
444
|
-
padding: 8px 16px 16px;
|
|
445
|
-
margin: 0;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
.floating-toc-content li {
|
|
449
|
-
margin: 0.1em 0;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
.floating-toc-content a {
|
|
453
|
-
color: #0066cc;
|
|
454
|
-
text-decoration: none;
|
|
455
|
-
display: block;
|
|
456
|
-
padding: 0.2em 0.5em;
|
|
457
|
-
border-radius: 4px;
|
|
458
|
-
font-size: 13px;
|
|
459
|
-
transition: background 0.15s ease;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
.floating-toc-content a:hover {
|
|
463
|
-
background: #e0e0e0;
|
|
464
|
-
color: #004499;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
.floating-toc-content ul ul {
|
|
468
|
-
padding-left: 1.2em;
|
|
469
|
-
margin-top: 0;
|
|
470
|
-
margin-bottom: 0;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
.floating-toc-content ul ul ul {
|
|
474
|
-
margin-top: 0;
|
|
475
|
-
margin-bottom: 0;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
.floating-toc-content ul ul a {
|
|
479
|
-
font-size: 12px;
|
|
480
|
-
color: #555;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
.floating-toc-content ul ul ul a {
|
|
484
|
-
font-size: 11px;
|
|
485
|
-
color: #666;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
/* Smooth scrolling */
|
|
489
|
-
html {
|
|
490
|
-
scroll-behavior: smooth;
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/* Code blocks */
|
|
494
|
-
code {
|
|
495
|
-
background: #f0f0f0;
|
|
496
|
-
padding: 0.2em 0.4em;
|
|
497
|
-
border-radius: 3px;
|
|
498
|
-
font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
|
|
499
|
-
font-size: 0.9em;
|
|
500
|
-
margin: 0 0.1em;
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
pre {
|
|
504
|
-
background: #f5f5f5;
|
|
505
|
-
padding: 1rem;
|
|
506
|
-
overflow-x: auto;
|
|
507
|
-
border-radius: 4px;
|
|
508
|
-
margin: 1em 0;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
pre code {
|
|
512
|
-
background: none;
|
|
513
|
-
padding: 0;
|
|
514
|
-
margin: 0;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
/* Rouge syntax highlighting - GitHub theme, scoped to .highlight containers */
|
|
518
|
-
.highlight {
|
|
519
|
-
color: #24292e;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
.highlight .c {
|
|
523
|
-
color: #6a737d;
|
|
524
|
-
font-style: italic;
|
|
525
|
-
} /* Comment */
|
|
526
|
-
.highlight .err {
|
|
527
|
-
color: #a61717;
|
|
528
|
-
background-color: #e3d2d2;
|
|
529
|
-
} /* Error */
|
|
530
|
-
.highlight .k {
|
|
531
|
-
color: #d73a49;
|
|
532
|
-
font-weight: bold;
|
|
533
|
-
} /* Keyword */
|
|
534
|
-
.highlight .l {
|
|
535
|
-
color: #032f62;
|
|
536
|
-
} /* Literal */
|
|
537
|
-
.highlight .n {
|
|
538
|
-
color: #24292e;
|
|
539
|
-
} /* Name */
|
|
540
|
-
.highlight .o {
|
|
541
|
-
color: #d73a49;
|
|
542
|
-
} /* Operator */
|
|
543
|
-
.highlight .p {
|
|
544
|
-
color: #24292e;
|
|
545
|
-
} /* Punctuation */
|
|
546
|
-
.highlight .cm {
|
|
547
|
-
color: #6a737d;
|
|
548
|
-
font-style: italic;
|
|
549
|
-
} /* Comment.Multiline */
|
|
550
|
-
.highlight .cp {
|
|
551
|
-
color: #6a737d;
|
|
552
|
-
font-weight: bold;
|
|
553
|
-
} /* Comment.Preproc */
|
|
554
|
-
.highlight .c1 {
|
|
555
|
-
color: #6a737d;
|
|
556
|
-
font-style: italic;
|
|
557
|
-
} /* Comment.Single */
|
|
558
|
-
.highlight .cs {
|
|
559
|
-
color: #6a737d;
|
|
560
|
-
font-weight: bold;
|
|
561
|
-
font-style: italic;
|
|
562
|
-
} /* Comment.Special */
|
|
563
|
-
.highlight .gd {
|
|
564
|
-
color: #24292e;
|
|
565
|
-
background-color: #ffeef0;
|
|
566
|
-
} /* Generic.Deleted */
|
|
567
|
-
.highlight .ge {
|
|
568
|
-
color: #24292e;
|
|
569
|
-
font-style: italic;
|
|
570
|
-
} /* Generic.Emph */
|
|
571
|
-
.highlight .gr {
|
|
572
|
-
color: #aa0000;
|
|
573
|
-
} /* Generic.Error */
|
|
574
|
-
.highlight .gh {
|
|
575
|
-
color: #999999;
|
|
576
|
-
font-weight: bold;
|
|
577
|
-
} /* Generic.Heading */
|
|
578
|
-
.highlight .gi {
|
|
579
|
-
color: #24292e;
|
|
580
|
-
background-color: #f0fff4;
|
|
581
|
-
} /* Generic.Inserted */
|
|
582
|
-
.highlight .go {
|
|
583
|
-
color: #888888;
|
|
584
|
-
} /* Generic.Output */
|
|
585
|
-
.highlight .gp {
|
|
586
|
-
color: #555555;
|
|
587
|
-
} /* Generic.Prompt */
|
|
588
|
-
.highlight .gs {
|
|
589
|
-
font-weight: bold;
|
|
590
|
-
} /* Generic.Strong */
|
|
591
|
-
.highlight .gu {
|
|
592
|
-
color: #aaaaaa;
|
|
593
|
-
} /* Generic.Subheading */
|
|
594
|
-
.highlight .gt {
|
|
595
|
-
color: #aa0000;
|
|
596
|
-
} /* Generic.Traceback */
|
|
597
|
-
.highlight .kc {
|
|
598
|
-
color: #d73a49;
|
|
599
|
-
font-weight: bold;
|
|
600
|
-
} /* Keyword.Constant */
|
|
601
|
-
.highlight .kd {
|
|
602
|
-
color: #d73a49;
|
|
603
|
-
font-weight: bold;
|
|
604
|
-
} /* Keyword.Declaration */
|
|
605
|
-
.highlight .kn {
|
|
606
|
-
color: #d73a49;
|
|
607
|
-
font-weight: bold;
|
|
608
|
-
} /* Keyword.Namespace */
|
|
609
|
-
.highlight .kp {
|
|
610
|
-
color: #d73a49;
|
|
611
|
-
font-weight: bold;
|
|
612
|
-
} /* Keyword.Pseudo */
|
|
613
|
-
.highlight .kr {
|
|
614
|
-
color: #d73a49;
|
|
615
|
-
font-weight: bold;
|
|
616
|
-
} /* Keyword.Reserved */
|
|
617
|
-
.highlight .kt {
|
|
618
|
-
color: #d73a49;
|
|
619
|
-
font-weight: bold;
|
|
620
|
-
} /* Keyword.Type */
|
|
621
|
-
.highlight .ld {
|
|
622
|
-
color: #032f62;
|
|
623
|
-
} /* Literal.Date */
|
|
624
|
-
.highlight .m {
|
|
625
|
-
color: #005cc5;
|
|
626
|
-
} /* Literal.Number */
|
|
627
|
-
.highlight .s {
|
|
628
|
-
color: #032f62;
|
|
629
|
-
} /* Literal.String */
|
|
630
|
-
.highlight .na {
|
|
631
|
-
color: #6f42c1;
|
|
632
|
-
} /* Name.Attribute */
|
|
633
|
-
.highlight .nb {
|
|
634
|
-
color: #005cc5;
|
|
635
|
-
} /* Name.Builtin */
|
|
636
|
-
.highlight .nc {
|
|
637
|
-
color: #6f42c1;
|
|
638
|
-
font-weight: bold;
|
|
639
|
-
} /* Name.Class */
|
|
640
|
-
.highlight .no {
|
|
641
|
-
color: #005cc5;
|
|
642
|
-
} /* Name.Constant */
|
|
643
|
-
.highlight .nd {
|
|
644
|
-
color: #6f42c1;
|
|
645
|
-
font-weight: bold;
|
|
646
|
-
} /* Name.Decorator */
|
|
647
|
-
.highlight .ni {
|
|
648
|
-
color: #800080;
|
|
649
|
-
} /* Name.Entity */
|
|
650
|
-
.highlight .ne {
|
|
651
|
-
color: #990000;
|
|
652
|
-
font-weight: bold;
|
|
653
|
-
} /* Name.Exception */
|
|
654
|
-
.highlight .nf {
|
|
655
|
-
color: #6f42c1;
|
|
656
|
-
} /* Name.Function */
|
|
657
|
-
.highlight .nl {
|
|
658
|
-
color: #990000;
|
|
659
|
-
} /* Name.Label */
|
|
660
|
-
.highlight .nn {
|
|
661
|
-
color: #555555;
|
|
662
|
-
} /* Name.Namespace */
|
|
663
|
-
.highlight .nx {
|
|
664
|
-
color: #6f42c1;
|
|
665
|
-
} /* Name.Other */
|
|
666
|
-
.highlight .py {
|
|
667
|
-
color: #990000;
|
|
668
|
-
} /* Name.Property */
|
|
669
|
-
.highlight .nt {
|
|
670
|
-
color: #22863a;
|
|
671
|
-
} /* Name.Tag */
|
|
672
|
-
.highlight .nv {
|
|
673
|
-
color: #e36209;
|
|
674
|
-
} /* Name.Variable */
|
|
675
|
-
.highlight .ow {
|
|
676
|
-
color: #d73a49;
|
|
677
|
-
font-weight: bold;
|
|
678
|
-
} /* Operator.Word */
|
|
679
|
-
.highlight .w {
|
|
680
|
-
color: #bbbbbb;
|
|
681
|
-
} /* Text.Whitespace */
|
|
682
|
-
.highlight .mf {
|
|
683
|
-
color: #005cc5;
|
|
684
|
-
} /* Literal.Number.Float */
|
|
685
|
-
.highlight .mh {
|
|
686
|
-
color: #005cc5;
|
|
687
|
-
} /* Literal.Number.Hex */
|
|
688
|
-
.highlight .mi {
|
|
689
|
-
color: #005cc5;
|
|
690
|
-
} /* Literal.Number.Integer */
|
|
691
|
-
.highlight .mo {
|
|
692
|
-
color: #005cc5;
|
|
693
|
-
} /* Literal.Number.Oct */
|
|
694
|
-
.highlight .sb {
|
|
695
|
-
color: #032f62;
|
|
696
|
-
} /* Literal.String.Backtick */
|
|
697
|
-
.highlight .sc {
|
|
698
|
-
color: #032f62;
|
|
699
|
-
} /* Literal.String.Char */
|
|
700
|
-
.highlight .sd {
|
|
701
|
-
color: #032f62;
|
|
702
|
-
} /* Literal.String.Doc */
|
|
703
|
-
.highlight .s2 {
|
|
704
|
-
color: #032f62;
|
|
705
|
-
} /* Literal.String.Double */
|
|
706
|
-
.highlight .se {
|
|
707
|
-
color: #032f62;
|
|
708
|
-
} /* Literal.String.Escape */
|
|
709
|
-
.highlight .sh {
|
|
710
|
-
color: #032f62;
|
|
711
|
-
} /* Literal.String.Heredoc */
|
|
712
|
-
.highlight .si {
|
|
713
|
-
color: #032f62;
|
|
714
|
-
} /* Literal.String.Interpol */
|
|
715
|
-
.highlight .sx {
|
|
716
|
-
color: #032f62;
|
|
717
|
-
} /* Literal.String.Other */
|
|
718
|
-
.highlight .sr {
|
|
719
|
-
color: #22863a;
|
|
720
|
-
} /* Literal.String.Regex */
|
|
721
|
-
.highlight .s1 {
|
|
722
|
-
color: #032f62;
|
|
723
|
-
} /* Literal.String.Single */
|
|
724
|
-
.highlight .ss {
|
|
725
|
-
color: #032f62;
|
|
726
|
-
} /* Literal.String.Symbol */
|
|
727
|
-
.highlight .bp {
|
|
728
|
-
color: #005cc5;
|
|
729
|
-
} /* Name.Builtin.Pseudo */
|
|
730
|
-
.highlight .vc {
|
|
731
|
-
color: #e36209;
|
|
732
|
-
} /* Name.Variable.Class */
|
|
733
|
-
.highlight .vg {
|
|
734
|
-
color: #e36209;
|
|
735
|
-
} /* Name.Variable.Global */
|
|
736
|
-
.highlight .vi {
|
|
737
|
-
color: #e36209;
|
|
738
|
-
} /* Name.Variable.Instance */
|
|
739
|
-
.highlight .il {
|
|
740
|
-
color: #005cc5;
|
|
741
|
-
} /* Literal.Number.Integer.Long */
|
|
742
|
-
|
|
743
|
-
/* Additional Rouge token classes that may be used */
|
|
744
|
-
.highlight .token {
|
|
745
|
-
color: #5670a0;
|
|
746
|
-
}
|
|
747
|
-
.highlight .token.list {
|
|
748
|
-
color: #546e9f;
|
|
749
|
-
}
|
|
750
|
-
.highlight .token.punctuation {
|
|
751
|
-
color: #3e8dad;
|
|
752
|
-
}
|
|
753
|
-
.highlight .token.list.punctuation {
|
|
754
|
-
color: #e05b78;
|
|
755
|
-
}
|
|
756
|
-
.highlight .token.content {
|
|
757
|
-
padding: 0;
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
/* Nested lists in page content */
|
|
761
|
-
ul ul,
|
|
762
|
-
ol ol,
|
|
763
|
-
ul ol,
|
|
764
|
-
ol ul {
|
|
765
|
-
padding-left: 1.5em;
|
|
766
|
-
margin-top: 0.25em;
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
/* Page footer */
|
|
770
|
-
.page-footer {
|
|
771
|
-
background: #f5f5f5;
|
|
772
|
-
border-top: 1px solid #ddd;
|
|
773
|
-
padding: 1.5rem;
|
|
774
|
-
margin-top: 3rem;
|
|
775
|
-
color: #666;
|
|
776
|
-
font-size: 0.9em;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
.page-footer p {
|
|
780
|
-
margin: 0.5em 0;
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
.page-footer a {
|
|
784
|
-
color: #0066cc;
|
|
785
|
-
text-decoration: none;
|
|
786
|
-
}
|
|
787
|
-
|
|
788
|
-
.page-footer a:hover {
|
|
789
|
-
text-decoration: underline;
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
/* Mobile responsive */
|
|
793
|
-
@media (max-width: 768px) {
|
|
794
|
-
.hamburger-menu {
|
|
795
|
-
display: flex;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
.main-toc,
|
|
799
|
-
.sidebar {
|
|
800
|
-
transform: translateX(-100%);
|
|
801
|
-
z-index: 175;
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
.main-toc.mobile-open,
|
|
805
|
-
.sidebar.mobile-open {
|
|
806
|
-
transform: translateX(0);
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
body {
|
|
810
|
-
margin: 2rem 1rem;
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
.floating-toc {
|
|
814
|
-
left: 0;
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
</style></head>
|
|
819
|
-
|
|
820
|
-
<body class="code-highlighted">
|
|
821
|
-
<div class="floating-toc" id="floating-toc">
|
|
822
|
-
<div class="floating-toc-container">
|
|
823
|
-
<div class="floating-toc-header">
|
|
824
|
-
<span>Table of Contents 🔻</span>
|
|
825
|
-
</div>
|
|
826
|
-
<div class="floating-toc-content" id="floating-toc-content">
|
|
827
|
-
<!-- Content will be populated by JavaScript -->
|
|
828
|
-
</div>
|
|
829
|
-
</div>
|
|
830
|
-
</div>
|
|
831
|
-
|
|
832
|
-
<button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
|
|
833
|
-
<div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
|
|
834
|
-
|
|
835
|
-
<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="Callouts.html">Callouts</a></li><li><a href="Tables.html">Tables</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="Quarto-Mode.html">Quarto Mode</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Rendering-Markdown-In-Terminal.html">Rendering Markdown in the Terminal</a></li><li><a href="Generating-Man-Pages.html">Generating Man Pages</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="Indices.html">Indices</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="Using-Apex-with-Jekyll.html">Using Apex with Jekyll</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="Writing-Tests.html">Writing Tests</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="Filters.html">Filters</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
|
|
836
|
-
|
|
837
|
-
<h1 id="xcode-integration">
|
|
838
|
-
Xcode Integration
|
|
839
|
-
</h1>
|
|
840
|
-
<nav class="page-toc" id="page-toc-top"><ul><li><a href="#xcode-integration">Xcode Integration</a><ul><li><a href="#production-readiness">Production Readiness</a></li><li><a href="#swift-package-manager-spm-recommended">Swift Package Manager (SPM) - Recommended</a><ul><li><a href="#adding-apex-via-spm">Adding Apex via SPM</a></li><li><a href="#using-apex-in-your-code">Using Apex in Your Code</a></li><li><a href="#platform-support">Platform Support</a></li><li><a href="#spm-benefits">SPM Benefits</a></li></ul></li><li><a href="#framework-build-alternative">Framework Build (Alternative)</a></li><li><a href="#adding-to-xcode-project">Adding to Xcode Project</a><ul><li><a href="#method-1-swift-package-manager-recommended">Method 1: Swift Package Manager (Recommended)</a></li><li><a href="#method-2-framework-reference">Method 2: Framework Reference</a></li><li><a href="#method-3-cmake-integration">Method 3: CMake Integration</a></li></ul></li><li><a href="#objective-c-wrapper">Objective-C Wrapper</a><ul><li><a href="#basic-usage">Basic Usage</a></li><li><a href="#api">API</a></li><li><a href="#table-of-contents-outline-data">Table of Contents (outline data)</a></li><li><a href="#convenience-methods">Convenience Methods</a><ul><li><a href="#standalone-html-documents">Standalone HTML Documents</a></li><li><a href="#pretty-printed-html">Pretty-Printed HTML</a></li><li><a href="#dictionary-based-options">Dictionary-Based Options</a></li><li><a href="#swift-friendly-convenience-method">Swift-Friendly Convenience Method</a></li><li><a href="#instance-methods">Instance Methods</a></li></ul></li></ul></li><li><a href="#mode-constants">Mode Constants</a></li><li><a href="#direct-c-api-usage">Direct C API Usage</a></li><li><a href="#integration-example">Integration Example</a><ul><li><a href="#adding-to-marked">Adding to Marked</a></li></ul></li><li><a href="#build-settings">Build Settings</a><ul><li><a href="#header-search-paths">Header Search Paths</a></li><li><a href="#framework-search-paths">Framework Search Paths</a></li><li><a href="#other-linker-flags">Other Linker Flags</a></li><li><a href="#swift-api-support">Swift API Support</a></li></ul></li><li><a href="#swift-integration">Swift Integration</a><ul><li><a href="#idiomatic-swift-api-recommended">Idiomatic Swift API (Recommended)</a></li><li><a href="#apexmode-enum">ApexMode Enum</a></li><li><a href="#apexoptions-struct">ApexOptions Struct</a></li><li><a href="#apexoptions-vs-apexoptions">ApexOptions vs apex_options</a></li><li><a href="#objective-c-bridge-alternative">Objective-C Bridge (Alternative)</a></li></ul></li><li><a href="#plugin-catalog-and-installation">Plugin Catalog and Installation</a><ul><li><a href="#swift-api-recommended">Swift API (recommended)</a></li><li><a href="#objective-c-api">Objective-C API</a></li><li><a href="#c-api">C API</a></li></ul></li><li><a href="#troubleshooting">Troubleshooting</a><ul><li><a href="#swift-package-manager-issues">Swift Package Manager Issues</a></li><li><a href="#framework-not-found">Framework Not Found</a></li><li><a href="#linker-errors">Linker Errors</a></li><li><a href="#runtime-errors">Runtime Errors</a></li></ul></li><li><a href="#performance">Performance</a></li><li><a href="#module-map">Module Map</a></li><li><a href="#comparison-of-integration-methods">Comparison of Integration Methods</a></li><li><a href="#related">Related</a></li></ul></li><li><a href="#index-section">Index</a></li></ul></nav>
|
|
841
|
-
|
|
842
|
-
<p>
|
|
843
|
-
This guide covers integrating Apex into Xcode projects for macOS and iOS applications.
|
|
844
|
-
</p>
|
|
845
|
-
|
|
846
|
-
<h2 id="production-readiness">
|
|
847
|
-
Production Readiness
|
|
848
|
-
</h2>
|
|
849
|
-
|
|
850
|
-
<p>
|
|
851
|
-
<strong>Important:</strong> Apex is currently in a pre-1.0 development stage. The API and implementation are still evolving, and breaking changes may occur between versions. Apex should only be used for testing and development purposes at this time.
|
|
852
|
-
</p>
|
|
853
|
-
|
|
854
|
-
<p>
|
|
855
|
-
Once Apex reaches version 1.0, the project will follow <a href="https://semver.org/">Semantic Versioning</a>. This means:
|
|
856
|
-
</p>
|
|
857
|
-
|
|
858
|
-
<ul>
|
|
859
|
-
|
|
860
|
-
<li>
|
|
861
|
-
<strong>Major versions</strong> (1.0, 2.0, etc.) may include breaking API changes
|
|
862
|
-
</li>
|
|
863
|
-
|
|
864
|
-
<li>
|
|
865
|
-
<strong>Minor versions</strong> (1.1, 1.2, etc.) will add new features while maintaining backward compatibility
|
|
866
|
-
</li>
|
|
867
|
-
|
|
868
|
-
<li>
|
|
869
|
-
<strong>Patch versions</strong> (1.0.1, 1.0.2, etc.) will only include bug fixes and will maintain full backward compatibility
|
|
870
|
-
</li>
|
|
871
|
-
|
|
872
|
-
</ul>
|
|
873
|
-
|
|
874
|
-
<p>
|
|
875
|
-
For production use, please wait for the stable 1.0 release. Until then, please report any issues or provide feedback to help shape the final API.
|
|
876
|
-
</p>
|
|
877
|
-
|
|
878
|
-
<h2 id="swift-package-manager-spm-recommended">
|
|
879
|
-
Swift Package Manager (SPM) - Recommended
|
|
880
|
-
</h2>
|
|
881
|
-
|
|
882
|
-
<p>
|
|
883
|
-
The easiest way to integrate Apex into your Xcode project is using Swift Package Manager.
|
|
884
|
-
</p>
|
|
885
|
-
|
|
886
|
-
<h3 id="adding-apex-via-spm">
|
|
887
|
-
Adding Apex via SPM
|
|
888
|
-
</h3>
|
|
889
|
-
|
|
890
|
-
<ol>
|
|
891
|
-
|
|
892
|
-
<li>
|
|
893
|
-
In Xcode, select your project in the navigator
|
|
894
|
-
</li>
|
|
895
|
-
|
|
896
|
-
<li>
|
|
897
|
-
Select your target
|
|
898
|
-
</li>
|
|
899
|
-
|
|
900
|
-
<li>
|
|
901
|
-
Go to the “Package Dependencies” tab
|
|
902
|
-
</li>
|
|
903
|
-
|
|
904
|
-
<li>
|
|
905
|
-
Click the “+” button
|
|
906
|
-
</li>
|
|
907
|
-
|
|
908
|
-
<li>
|
|
909
|
-
Enter the repository URL: <code>https://github.com/ApexMarkdown/apex</code>
|
|
910
|
-
</li>
|
|
911
|
-
|
|
912
|
-
<li>
|
|
913
|
-
Select the version or branch you want to use
|
|
914
|
-
</li>
|
|
915
|
-
|
|
916
|
-
<li>
|
|
917
|
-
Click “Add Package”
|
|
918
|
-
</li>
|
|
919
|
-
|
|
920
|
-
<li>
|
|
921
|
-
Select the “Apex” library product
|
|
922
|
-
</li>
|
|
923
|
-
|
|
924
|
-
<li>
|
|
925
|
-
Click “Add Package”
|
|
926
|
-
</li>
|
|
927
|
-
|
|
928
|
-
</ol>
|
|
929
|
-
|
|
930
|
-
<h3 id="using-apex-in-your-code">
|
|
931
|
-
Using Apex in Your Code
|
|
932
|
-
</h3>
|
|
933
|
-
|
|
934
|
-
<p>
|
|
935
|
-
Once added via SPM, simply import and use:
|
|
936
|
-
</p>
|
|
937
|
-
|
|
938
|
-
<div class="highlight">
|
|
939
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Apex</span>
|
|
940
|
-
|
|
941
|
-
<span class="c1">// Basic usage</span>
|
|
942
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">markdown</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"# Hello World"</span>
|
|
943
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">()</span>
|
|
944
|
-
|
|
945
|
-
<span class="c1">// With mode</span>
|
|
946
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">gfm</span><span class="p">)</span>
|
|
947
|
-
|
|
948
|
-
<span class="c1">// With options</span>
|
|
949
|
-
<span class="kd">var</span><span class="w"> </span><span class="nv">options</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexOptions</span><span class="p">()</span>
|
|
950
|
-
<span class="n">options</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
951
|
-
<span class="n">options</span><span class="p">.</span><span class="n">generateHeaderIDs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
952
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html3</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span><span class="p">)</span>
|
|
953
|
-
</pre>
|
|
954
|
-
</div>
|
|
955
|
-
|
|
956
|
-
<h3 id="platform-support">
|
|
957
|
-
Platform Support
|
|
958
|
-
</h3>
|
|
959
|
-
|
|
960
|
-
<ul>
|
|
961
|
-
|
|
962
|
-
<li>
|
|
963
|
-
<strong>macOS</strong>: 10.13+ (High Sierra)
|
|
964
|
-
</li>
|
|
965
|
-
|
|
966
|
-
<li>
|
|
967
|
-
<strong>iOS</strong>: 11.0+
|
|
968
|
-
</li>
|
|
969
|
-
|
|
970
|
-
</ul>
|
|
971
|
-
|
|
972
|
-
<h3 id="spm-benefits">
|
|
973
|
-
SPM Benefits
|
|
974
|
-
</h3>
|
|
975
|
-
|
|
976
|
-
<ul>
|
|
977
|
-
|
|
978
|
-
<li>
|
|
979
|
-
Automatic dependency management
|
|
980
|
-
</li>
|
|
981
|
-
|
|
982
|
-
<li>
|
|
983
|
-
No manual framework embedding
|
|
984
|
-
</li>
|
|
985
|
-
|
|
986
|
-
<li>
|
|
987
|
-
Works with both macOS and iOS
|
|
988
|
-
</li>
|
|
989
|
-
|
|
990
|
-
<li>
|
|
991
|
-
Easy version updates
|
|
992
|
-
</li>
|
|
993
|
-
|
|
994
|
-
<li>
|
|
995
|
-
Integrated with Xcode’s build system
|
|
996
|
-
</li>
|
|
997
|
-
|
|
998
|
-
</ul>
|
|
999
|
-
|
|
1000
|
-
<h2 id="framework-build-alternative">
|
|
1001
|
-
Framework Build (Alternative)
|
|
1002
|
-
</h2>
|
|
1003
|
-
|
|
1004
|
-
<p>
|
|
1005
|
-
Apex can also be built as a framework for manual integration:
|
|
1006
|
-
</p>
|
|
1007
|
-
|
|
1008
|
-
<div class="highlight">
|
|
1009
|
-
<pre><span></span><span class="nb">cd</span><span class="w"> </span>apex
|
|
1010
|
-
mkdir<span class="w"> </span>build<span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">cd</span><span class="w"> </span>build
|
|
1011
|
-
cmake<span class="w"> </span>-DBUILD_FRAMEWORK<span class="o">=</span>ON<span class="w"> </span>..
|
|
1012
|
-
make
|
|
1013
|
-
</pre>
|
|
1014
|
-
</div>
|
|
1015
|
-
|
|
1016
|
-
<p>
|
|
1017
|
-
The framework will be at <code>build/Apex.framework</code>.
|
|
1018
|
-
</p>
|
|
1019
|
-
|
|
1020
|
-
<h2 id="adding-to-xcode-project">
|
|
1021
|
-
Adding to Xcode Project
|
|
1022
|
-
</h2>
|
|
1023
|
-
|
|
1024
|
-
<h3 id="method-1-swift-package-manager-recommended">
|
|
1025
|
-
Method 1: Swift Package Manager (Recommended)
|
|
1026
|
-
</h3>
|
|
1027
|
-
|
|
1028
|
-
<p>
|
|
1029
|
-
See the SPM section above for the easiest integration method.
|
|
1030
|
-
</p>
|
|
1031
|
-
|
|
1032
|
-
<h3 id="method-2-framework-reference">
|
|
1033
|
-
Method 2: Framework Reference
|
|
1034
|
-
</h3>
|
|
1035
|
-
|
|
1036
|
-
<ol>
|
|
1037
|
-
|
|
1038
|
-
<li>
|
|
1039
|
-
Drag <code>Apex.framework</code> into your Xcode project
|
|
1040
|
-
</li>
|
|
1041
|
-
|
|
1042
|
-
<li>
|
|
1043
|
-
Add to “Frameworks, Libraries, and Embedded Content”
|
|
1044
|
-
</li>
|
|
1045
|
-
|
|
1046
|
-
<li>
|
|
1047
|
-
Set “Embed & Sign” for the framework
|
|
1048
|
-
</li>
|
|
1049
|
-
|
|
1050
|
-
</ol>
|
|
1051
|
-
|
|
1052
|
-
<h3 id="method-3-cmake-integration">
|
|
1053
|
-
Method 3: CMake Integration
|
|
1054
|
-
</h3>
|
|
1055
|
-
|
|
1056
|
-
<p>
|
|
1057
|
-
If your project uses CMake:
|
|
1058
|
-
</p>
|
|
1059
|
-
|
|
1060
|
-
<div class="highlight">
|
|
1061
|
-
<pre><span></span><span class="nb">add_subdirectory</span><span class="p">(</span><span class="s">apex</span><span class="p">)</span>
|
|
1062
|
-
<span class="nb">target_link_libraries</span><span class="p">(</span><span class="s">your_app</span><span class="w"> </span><span class="s">Apex</span><span class="p">)</span>
|
|
1063
|
-
</pre>
|
|
1064
|
-
</div>
|
|
1065
|
-
|
|
1066
|
-
<h2 id="objective-c-wrapper">
|
|
1067
|
-
Objective-C Wrapper
|
|
1068
|
-
</h2>
|
|
1069
|
-
|
|
1070
|
-
<p>
|
|
1071
|
-
Apex includes an Objective-C wrapper for easy integration:
|
|
1072
|
-
</p>
|
|
1073
|
-
|
|
1074
|
-
<p>
|
|
1075
|
-
<strong>Files:</strong>
|
|
1076
|
-
</p>
|
|
1077
|
-
|
|
1078
|
-
<ul>
|
|
1079
|
-
|
|
1080
|
-
<li>
|
|
1081
|
-
<code>apex/objc/NSString+Apex.h</code>
|
|
1082
|
-
</li>
|
|
1083
|
-
|
|
1084
|
-
<li>
|
|
1085
|
-
<code>apex/objc/NSString+Apex.m</code>
|
|
1086
|
-
</li>
|
|
1087
|
-
|
|
1088
|
-
</ul>
|
|
1089
|
-
|
|
1090
|
-
<h3 id="basic-usage">
|
|
1091
|
-
Basic Usage
|
|
1092
|
-
</h3>
|
|
1093
|
-
|
|
1094
|
-
<div class="highlight">
|
|
1095
|
-
<pre><span></span><span class="cp">#import "NSString+Apex.h"</span>
|
|
1096
|
-
|
|
1097
|
-
<span class="c1">// Convert with default unified mode</span>
|
|
1098
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="p">];</span>
|
|
1099
|
-
|
|
1100
|
-
<span class="c1">// Convert with specific mode using constants (recommended)</span>
|
|
1101
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">gfmHtml</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeGFM</span><span class="p">];</span>
|
|
1102
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">mmdHtml</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeMultiMarkdown</span><span class="p">];</span>
|
|
1103
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">kramdownHtml</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeKramdown</span><span class="p">];</span>
|
|
1104
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">commonmarkHtml</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeCommonmark</span><span class="p">];</span>
|
|
1105
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">unifiedHtml</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeUnified</span><span class="p">];</span>
|
|
1106
|
-
|
|
1107
|
-
<span class="c1">// String literals also work (for backward compatibility)</span>
|
|
1108
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">gfmHtml2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="s">@"gfm"</span><span class="p">];</span>
|
|
1109
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">mmdHtml2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdownText</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="s">@"multimarkdown"</span><span class="p">];</span>
|
|
1110
|
-
</pre>
|
|
1111
|
-
</div>
|
|
1112
|
-
|
|
1113
|
-
<h3 id="api">
|
|
1114
|
-
API
|
|
1115
|
-
</h3>
|
|
1116
|
-
|
|
1117
|
-
<div class="highlight">
|
|
1118
|
-
<pre><span></span><span class="c1">// Mode constants</span>
|
|
1119
|
-
<span class="k">extern</span><span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">ApexModeCommonmark</span><span class="p">;</span>
|
|
1120
|
-
<span class="k">extern</span><span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">ApexModeGFM</span><span class="p">;</span>
|
|
1121
|
-
<span class="k">extern</span><span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">ApexModeMultiMarkdown</span><span class="p">;</span>
|
|
1122
|
-
<span class="k">extern</span><span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">ApexModeKramdown</span><span class="p">;</span>
|
|
1123
|
-
<span class="k">extern</span><span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">ApexModeUnified</span><span class="p">;</span>
|
|
1124
|
-
|
|
1125
|
-
<span class="k">@interface</span> <span class="bp">NSString</span> <span class="nl">(Apex)</span>
|
|
1126
|
-
|
|
1127
|
-
<span class="c1">// Basic conversion methods</span>
|
|
1128
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span><span class="p">;</span>
|
|
1129
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span><span class="w"> </span><span class="nf">mode:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span><span class="p">;</span>
|
|
1130
|
-
|
|
1131
|
-
<span class="c1">// Standalone HTML document generation</span>
|
|
1132
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span>
|
|
1133
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1134
|
-
<span class="w"> </span><span class="nl">standalone</span><span class="p">:(</span><span class="kt">BOOL</span><span class="p">)</span><span class="nv">standalone</span>
|
|
1135
|
-
<span class="w"> </span><span class="nl">stylesheet</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">stylesheetPath</span>
|
|
1136
|
-
<span class="w"> </span><span class="nl">title</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">title</span><span class="p">;</span>
|
|
1137
|
-
|
|
1138
|
-
<span class="c1">// Pretty-printed HTML output</span>
|
|
1139
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span>
|
|
1140
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1141
|
-
<span class="w"> </span><span class="nl">pretty</span><span class="p">:(</span><span class="kt">BOOL</span><span class="p">)</span><span class="nv">pretty</span><span class="p">;</span>
|
|
1142
|
-
|
|
1143
|
-
<span class="c1">// Dictionary-based options configuration</span>
|
|
1144
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span>
|
|
1145
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1146
|
-
<span class="w"> </span><span class="nl">options</span><span class="p">:(</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">options</span><span class="p">;</span>
|
|
1147
|
-
|
|
1148
|
-
<span class="c1">// Swift-friendly convenience method with common options</span>
|
|
1149
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span>
|
|
1150
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1151
|
-
<span class="w"> </span><span class="nl">generateHeaderIDs</span><span class="p">:(</span><span class="kt">BOOL</span><span class="p">)</span><span class="nv">generateHeaderIDs</span>
|
|
1152
|
-
<span class="w"> </span><span class="nl">hardBreaks</span><span class="p">:(</span><span class="kt">BOOL</span><span class="p">)</span><span class="nv">hardBreaks</span>
|
|
1153
|
-
<span class="w"> </span><span class="nl">pretty</span><span class="p">:(</span><span class="kt">BOOL</span><span class="p">)</span><span class="nv">pretty</span><span class="p">;</span>
|
|
1154
|
-
|
|
1155
|
-
<span class="c1">// Instance methods for convenient usage</span>
|
|
1156
|
-
<span class="p">-</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">apexHTML</span><span class="p">;</span>
|
|
1157
|
-
<span class="p">-</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">apexHTMLWithMode:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span><span class="p">;</span>
|
|
1158
|
-
|
|
1159
|
-
<span class="c1">// Structured table of contents (flat outline entries)</span>
|
|
1160
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSArray</span><span class="o"><</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">tableOfContentsWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span><span class="p">;</span>
|
|
1161
|
-
<span class="p">+</span> <span class="p">(</span><span class="bp">NSArray</span><span class="o"><</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">tableOfContentsWithApex:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span>
|
|
1162
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1163
|
-
<span class="w"> </span><span class="nl">options</span><span class="p">:(</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">options</span><span class="p">;</span>
|
|
1164
|
-
<span class="p">-</span> <span class="p">(</span><span class="bp">NSArray</span><span class="o"><</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">apexTableOfContents</span><span class="p">;</span>
|
|
1165
|
-
<span class="p">-</span> <span class="p">(</span><span class="bp">NSArray</span><span class="o"><</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">apexTableOfContentsWithMode:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">mode</span>
|
|
1166
|
-
<span class="w"> </span><span class="nl">options</span><span class="p">:(</span><span class="bp">NSDictionary</span><span class="o"><</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">id</span><span class="o">></span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_Nullable</span><span class="p">)</span><span class="nv">options</span><span class="p">;</span>
|
|
1167
|
-
|
|
1168
|
-
<span class="k">@end</span>
|
|
1169
|
-
</pre>
|
|
1170
|
-
</div>
|
|
1171
|
-
|
|
1172
|
-
<p>
|
|
1173
|
-
<strong>Parameters:</strong>
|
|
1174
|
-
</p>
|
|
1175
|
-
|
|
1176
|
-
<ul>
|
|
1177
|
-
|
|
1178
|
-
<li>
|
|
1179
|
-
<code>markdown</code> - Input Markdown text
|
|
1180
|
-
</li>
|
|
1181
|
-
|
|
1182
|
-
<li>
|
|
1183
|
-
<code>mode</code> - Processor mode: Use <code>ApexMode*</code> constants (recommended) or string literals:
|
|
1184
|
-
<ul>
|
|
1185
|
-
|
|
1186
|
-
<li>
|
|
1187
|
-
<code>ApexModeCommonmark</code> or <code>@"commonmark"</code> - Pure CommonMark specification
|
|
1188
|
-
</li>
|
|
1189
|
-
|
|
1190
|
-
<li>
|
|
1191
|
-
<code>ApexModeGFM</code> or <code>@"gfm"</code> - GitHub Flavored Markdown
|
|
1192
|
-
</li>
|
|
1193
|
-
|
|
1194
|
-
<li>
|
|
1195
|
-
<code>ApexModeMultiMarkdown</code> or <code>@"multimarkdown"</code> / <code>@"mmd"</code> - MultiMarkdown compatibility
|
|
1196
|
-
</li>
|
|
1197
|
-
|
|
1198
|
-
<li>
|
|
1199
|
-
<code>ApexModeKramdown</code> or <code>@"kramdown"</code> - Kramdown compatibility
|
|
1200
|
-
</li>
|
|
1201
|
-
|
|
1202
|
-
<li>
|
|
1203
|
-
<code>ApexModeUnified</code> or <code>@"unified"</code> - All features enabled (default)
|
|
1204
|
-
</li>
|
|
1205
|
-
|
|
1206
|
-
</ul>
|
|
1207
|
-
|
|
1208
|
-
</li>
|
|
1209
|
-
|
|
1210
|
-
</ul>
|
|
1211
|
-
|
|
1212
|
-
<p>
|
|
1213
|
-
<strong>Returns:</strong> HTML string (autoreleased)
|
|
1214
|
-
</p>
|
|
1215
|
-
|
|
1216
|
-
<p>
|
|
1217
|
-
<strong>Note:</strong> Using the <code>ApexMode*</code> constants is recommended to avoid typos and provides autocomplete support in Xcode. String literals are still supported for backward compatibility.
|
|
1218
|
-
</p>
|
|
1219
|
-
|
|
1220
|
-
<h3 id="table-of-contents-outline-data">
|
|
1221
|
-
Table of Contents (outline data)
|
|
1222
|
-
</h3>
|
|
1223
|
-
|
|
1224
|
-
<p>
|
|
1225
|
-
For collapsible section UIs, use the structured TOC helpers instead of parsing HTML. Each entry is a dictionary:
|
|
1226
|
-
</p>
|
|
1227
|
-
|
|
1228
|
-
<table>
|
|
1229
|
-
|
|
1230
|
-
<thead>
|
|
1231
|
-
|
|
1232
|
-
<tr>
|
|
1233
|
-
|
|
1234
|
-
<th>
|
|
1235
|
-
Key
|
|
1236
|
-
</th>
|
|
1237
|
-
|
|
1238
|
-
<th>
|
|
1239
|
-
Type
|
|
1240
|
-
</th>
|
|
1241
|
-
|
|
1242
|
-
<th>
|
|
1243
|
-
Meaning
|
|
1244
|
-
</th>
|
|
1245
|
-
|
|
1246
|
-
</tr>
|
|
1247
|
-
|
|
1248
|
-
</thead>
|
|
1249
|
-
|
|
1250
|
-
<tbody>
|
|
1251
|
-
|
|
1252
|
-
<tr>
|
|
1253
|
-
|
|
1254
|
-
<td>
|
|
1255
|
-
<code>level</code>
|
|
1256
|
-
</td>
|
|
1257
|
-
|
|
1258
|
-
<td>
|
|
1259
|
-
<code>NSNumber</code>
|
|
1260
|
-
</td>
|
|
1261
|
-
|
|
1262
|
-
<td>
|
|
1263
|
-
Heading level 1–6
|
|
1264
|
-
</td>
|
|
1265
|
-
|
|
1266
|
-
</tr>
|
|
1267
|
-
<tr>
|
|
1268
|
-
|
|
1269
|
-
<td>
|
|
1270
|
-
<code>text</code>
|
|
1271
|
-
</td>
|
|
1272
|
-
|
|
1273
|
-
<td>
|
|
1274
|
-
<code>NSString</code>
|
|
1275
|
-
</td>
|
|
1276
|
-
|
|
1277
|
-
<td>
|
|
1278
|
-
Display title
|
|
1279
|
-
</td>
|
|
1280
|
-
|
|
1281
|
-
</tr>
|
|
1282
|
-
<tr>
|
|
1283
|
-
|
|
1284
|
-
<td>
|
|
1285
|
-
<code>id</code>
|
|
1286
|
-
</td>
|
|
1287
|
-
|
|
1288
|
-
<td>
|
|
1289
|
-
<code>NSString</code>
|
|
1290
|
-
</td>
|
|
1291
|
-
|
|
1292
|
-
<td>
|
|
1293
|
-
Fragment id (same rules as <code>--id-format</code> / manual IDs)
|
|
1294
|
-
</td>
|
|
1295
|
-
|
|
1296
|
-
</tr>
|
|
1297
|
-
</tbody>
|
|
1298
|
-
|
|
1299
|
-
</table>
|
|
1300
|
-
|
|
1301
|
-
<p>
|
|
1302
|
-
Optional <code>options</code> keys for TOC extraction:
|
|
1303
|
-
</p>
|
|
1304
|
-
|
|
1305
|
-
<ul>
|
|
1306
|
-
|
|
1307
|
-
<li>
|
|
1308
|
-
<code>idFormat</code> — <code>@"gfm"</code>, <code>@"mmd"</code>, or <code>@"kramdown"</code>
|
|
1309
|
-
</li>
|
|
1310
|
-
|
|
1311
|
-
<li>
|
|
1312
|
-
<code>tocMinMax</code> — <code>@"2,4"</code> or <code>@[@2, @4]</code> (default depth is 1–3)
|
|
1313
|
-
</li>
|
|
1314
|
-
|
|
1315
|
-
</ul>
|
|
1316
|
-
|
|
1317
|
-
<div class="highlight">
|
|
1318
|
-
<pre><span></span><span class="bp">NSArray</span><span class="w"> </span><span class="o">*</span><span class="n">entries</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">tableOfContentsWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1319
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeUnified</span>
|
|
1320
|
-
<span class="w"> </span><span class="nl">options</span><span class="p">:</span><span class="l">@{</span><span class="w"> </span><span class="s">@"tocMinMax"</span><span class="o">:</span><span class="w"> </span><span class="s">@"1,4"</span><span class="w"> </span><span class="l">}</span><span class="p">];</span>
|
|
1321
|
-
|
|
1322
|
-
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="bp">NSDictionary</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">entries</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1323
|
-
<span class="w"> </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@"h%@ %@ (#%@)"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">[</span><span class="s">@"level"</span><span class="p">],</span><span class="w"> </span><span class="n">entry</span><span class="p">[</span><span class="s">@"text"</span><span class="p">],</span><span class="w"> </span><span class="n">entry</span><span class="p">[</span><span class="s">@"id"</span><span class="p">]);</span>
|
|
1324
|
-
<span class="p">}</span>
|
|
1325
|
-
</pre>
|
|
1326
|
-
</div>
|
|
1327
|
-
|
|
1328
|
-
<div class="highlight">
|
|
1329
|
-
<pre><span></span><span class="kd">let</span><span class="w"> </span><span class="nv">entries</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexTableOfContents</span><span class="p">()</span>
|
|
1330
|
-
<span class="c1">// or:</span>
|
|
1331
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">entries</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="bp">NSString</span><span class="p">.</span><span class="n">tableOfContents</span><span class="p">(</span>
|
|
1332
|
-
<span class="w"> </span><span class="n">withApex</span><span class="p">:</span><span class="w"> </span><span class="n">markdown</span><span class="p">,</span>
|
|
1333
|
-
<span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="n">ApexModeUnified</span><span class="p">,</span>
|
|
1334
|
-
<span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s">"tocMinMax"</span><span class="p">:</span><span class="w"> </span><span class="s">"1,4"</span><span class="p">,</span><span class="w"> </span><span class="s">"idFormat"</span><span class="p">:</span><span class="w"> </span><span class="s">"gfm"</span><span class="p">]</span>
|
|
1335
|
-
<span class="p">)</span>
|
|
1336
|
-
|
|
1337
|
-
<span class="c1">// Build nested outline rows from flat levels:</span>
|
|
1338
|
-
<span class="c1">// - deeper level => child of previous open section</span>
|
|
1339
|
-
<span class="c1">// - shallower/equal level => close sections until the parent fits</span>
|
|
1340
|
-
</pre>
|
|
1341
|
-
</div>
|
|
1342
|
-
|
|
1343
|
-
<p>
|
|
1344
|
-
Headings marked <code>{:.no_toc}</code> are omitted. See <a href="C-API#structured-toc-entries">C API</a> for the underlying <code>apex_markdown_to_toc_entries</code> function and <a href="Command-Line-Options.html">Command Line Options</a> for <code>-t toc</code>.
|
|
1345
|
-
</p>
|
|
1346
|
-
|
|
1347
|
-
<h3 id="convenience-methods">
|
|
1348
|
-
Convenience Methods
|
|
1349
|
-
</h3>
|
|
1350
|
-
|
|
1351
|
-
<p>
|
|
1352
|
-
Apex provides additional convenience methods for common use cases:
|
|
1353
|
-
</p>
|
|
1354
|
-
|
|
1355
|
-
<h4 id="standalone-html-documents">
|
|
1356
|
-
Standalone HTML Documents
|
|
1357
|
-
</h4>
|
|
1358
|
-
|
|
1359
|
-
<p>
|
|
1360
|
-
Generate complete HTML5 documents with stylesheet and title:
|
|
1361
|
-
</p>
|
|
1362
|
-
|
|
1363
|
-
<div class="highlight">
|
|
1364
|
-
<pre><span></span><span class="c1">// Generate standalone HTML document</span>
|
|
1365
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1366
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeUnified</span>
|
|
1367
|
-
<span class="w"> </span><span class="nl">standalone</span><span class="p">:</span><span class="nb">YES</span>
|
|
1368
|
-
<span class="w"> </span><span class="nl">stylesheet</span><span class="p">:</span><span class="s">@"style.css"</span>
|
|
1369
|
-
<span class="w"> </span><span class="nl">title</span><span class="p">:</span><span class="s">@"My Document"</span><span class="p">];</span>
|
|
1370
|
-
|
|
1371
|
-
<span class="c1">// Without stylesheet or title</span>
|
|
1372
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1373
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeGFM</span>
|
|
1374
|
-
<span class="w"> </span><span class="nl">standalone</span><span class="p">:</span><span class="nb">YES</span>
|
|
1375
|
-
<span class="w"> </span><span class="nl">stylesheet</span><span class="p">:</span><span class="nb">nil</span>
|
|
1376
|
-
<span class="w"> </span><span class="nl">title</span><span class="p">:</span><span class="nb">nil</span><span class="p">];</span>
|
|
1377
|
-
</pre>
|
|
1378
|
-
</div>
|
|
1379
|
-
|
|
1380
|
-
<h4 Key id="pretty-printed-html">
|
|
1381
|
-
Pretty-Printed HTML
|
|
1382
|
-
</h4>
|
|
1383
|
-
|
|
1384
|
-
<p>
|
|
1385
|
-
Generate formatted HTML with indentation:
|
|
1386
|
-
</p>
|
|
1387
|
-
|
|
1388
|
-
<div class="highlight">
|
|
1389
|
-
<pre><span></span><span class="c1">// Pretty-print HTML output</span>
|
|
1390
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1391
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeUnified</span>
|
|
1392
|
-
<span class="w"> </span><span class="nl">pretty</span><span class="p">:</span><span class="nb">YES</span><span class="p">];</span>
|
|
1393
|
-
</pre>
|
|
1394
|
-
</div>
|
|
1395
|
-
|
|
1396
|
-
<h4 Type id="dictionary-based-options">
|
|
1397
|
-
Dictionary-Based Options
|
|
1398
|
-
</h4>
|
|
1399
|
-
|
|
1400
|
-
<p>
|
|
1401
|
-
Configure multiple options at once using a dictionary:
|
|
1402
|
-
</p>
|
|
1403
|
-
|
|
1404
|
-
<div class="highlight">
|
|
1405
|
-
<pre><span></span><span class="c1">// Configure multiple options</span>
|
|
1406
|
-
<span class="bp">NSDictionary</span><span class="w"> </span><span class="o">*</span><span class="n">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="l">@{</span>
|
|
1407
|
-
<span class="w"> </span><span class="s">@"pretty"</span><span class="o">:</span><span class="w"> </span><span class="m">@YES</span><span class="p">,</span>
|
|
1408
|
-
<span class="w"> </span><span class="s">@"standalone"</span><span class="o">:</span><span class="w"> </span><span class="m">@YES</span><span class="p">,</span>
|
|
1409
|
-
<span class="w"> </span><span class="s">@"stylesheet"</span><span class="o">:</span><span class="w"> </span><span class="s">@"style.css"</span><span class="p">,</span>
|
|
1410
|
-
<span class="w"> </span><span class="s">@"title"</span><span class="o">:</span><span class="w"> </span><span class="s">@"My Document"</span><span class="p">,</span>
|
|
1411
|
-
<span class="w"> </span><span class="s">@"hardBreaks"</span><span class="o">:</span><span class="w"> </span><span class="m">@YES</span><span class="p">,</span>
|
|
1412
|
-
<span class="w"> </span><span class="s">@"generateHeaderIDs"</span><span class="o">:</span><span class="w"> </span><span class="m">@YES</span><span class="p">,</span>
|
|
1413
|
-
<span class="w"> </span><span class="s">@"headerAnchors"</span><span class="o">:</span><span class="w"> </span><span class="m">@NO</span><span class="p">,</span>
|
|
1414
|
-
<span class="w"> </span><span class="s">@"obfuscateEmails"</span><span class="o">:</span><span class="w"> </span><span class="m">@YES</span><span class="p">,</span>
|
|
1415
|
-
<span class="w"> </span><span class="s">@"embedImages"</span><span class="o">:</span><span class="w"> </span><span class="m">@NO</span>
|
|
1416
|
-
<span class="l">}</span><span class="p">;</span>
|
|
1417
|
-
|
|
1418
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1419
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeUnified</span>
|
|
1420
|
-
<span class="w"> </span><span class="nl">options</span><span class="p">:</span><span class="n">options</span><span class="p">];</span>
|
|
1421
|
-
</pre>
|
|
1422
|
-
</div>
|
|
1423
|
-
|
|
1424
|
-
<p>
|
|
1425
|
-
<strong>Supported dictionary keys:</strong>
|
|
1426
|
-
</p>
|
|
1427
|
-
|
|
1428
|
-
<ul>
|
|
1429
|
-
|
|
1430
|
-
<li>
|
|
1431
|
-
<code>@"pretty"</code> - NSNumber (BOOL): Pretty-print HTML with indentation
|
|
1432
|
-
</li>
|
|
1433
|
-
|
|
1434
|
-
<li>
|
|
1435
|
-
<code>@"standalone"</code> - NSNumber (BOOL): Generate complete HTML5 document
|
|
1436
|
-
</li>
|
|
1437
|
-
|
|
1438
|
-
<li>
|
|
1439
|
-
<code>@"stylesheet"</code> - NSString: Path to CSS file to link in document head
|
|
1440
|
-
</li>
|
|
1441
|
-
|
|
1442
|
-
<li>
|
|
1443
|
-
<code>@"title"</code> - NSString: Document title
|
|
1444
|
-
</li>
|
|
1445
|
-
|
|
1446
|
-
<li>
|
|
1447
|
-
<code>@"hardBreaks"</code> - NSNumber (BOOL): Treat newlines as hard breaks
|
|
1448
|
-
</li>
|
|
1449
|
-
|
|
1450
|
-
<li>
|
|
1451
|
-
<code>@"generateHeaderIDs"</code> - NSNumber (BOOL): Generate IDs for headers
|
|
1452
|
-
</li>
|
|
1453
|
-
|
|
1454
|
-
<li>
|
|
1455
|
-
<code>@"unsafe"</code> - NSNumber (BOOL): Allow raw HTML in output
|
|
1456
|
-
</li>
|
|
1457
|
-
|
|
1458
|
-
<li>
|
|
1459
|
-
<code>@"headerAnchors"</code> - NSNumber (BOOL): Generate anchor tags instead of header IDs
|
|
1460
|
-
</li>
|
|
1461
|
-
|
|
1462
|
-
<li>
|
|
1463
|
-
<code>@"obfuscateEmails"</code> - NSNumber (BOOL): Obfuscate email links using HTML entities
|
|
1464
|
-
</li>
|
|
1465
|
-
|
|
1466
|
-
<li>
|
|
1467
|
-
<code>@"embedImages"</code> - NSNumber (BOOL): Embed local images as base64 data URLs
|
|
1468
|
-
</li>
|
|
1469
|
-
|
|
1470
|
-
<li>
|
|
1471
|
-
<code>@"enablePlugins"</code> - NSNumber (BOOL): Enable external plugin processing during conversion
|
|
1472
|
-
</li>
|
|
1473
|
-
|
|
1474
|
-
</ul>
|
|
1475
|
-
|
|
1476
|
-
<h4 Meaning id="swift-friendly-convenience-method">
|
|
1477
|
-
Swift-Friendly Convenience Method
|
|
1478
|
-
</h4>
|
|
1479
|
-
|
|
1480
|
-
<p>
|
|
1481
|
-
Combine common options in a single method call (ideal for Swift):
|
|
1482
|
-
</p>
|
|
1483
|
-
|
|
1484
|
-
<div class="highlight">
|
|
1485
|
-
<pre><span></span><span class="c1">// Combine common options</span>
|
|
1486
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span>
|
|
1487
|
-
<span class="w"> </span><span class="nl">mode</span><span class="p">:</span><span class="n">ApexModeUnified</span>
|
|
1488
|
-
<span class="w"> </span><span class="nl">generateHeaderIDs</span><span class="p">:</span><span class="nb">YES</span>
|
|
1489
|
-
<span class="w"> </span><span class="nl">hardBreaks</span><span class="p">:</span><span class="nb">YES</span>
|
|
1490
|
-
<span class="w"> </span><span class="nl">pretty</span><span class="p">:</span><span class="nb">YES</span><span class="p">];</span>
|
|
1491
|
-
</pre>
|
|
1492
|
-
</div>
|
|
1493
|
-
|
|
1494
|
-
<h4 id="instance-methods">
|
|
1495
|
-
Instance Methods
|
|
1496
|
-
</h4>
|
|
1497
|
-
|
|
1498
|
-
<p>
|
|
1499
|
-
Use instance methods for more natural, fluent syntax:
|
|
1500
|
-
</p>
|
|
1501
|
-
|
|
1502
|
-
<div class="highlight">
|
|
1503
|
-
<pre><span></span><span class="c1">// Instance method with default unified mode</span>
|
|
1504
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">markdown</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">@"# Hello World"</span><span class="p">;</span>
|
|
1505
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">markdown</span><span class="w"> </span><span class="n">apexHTML</span><span class="p">];</span>
|
|
1506
|
-
|
|
1507
|
-
<span class="c1">// Instance method with specific mode</span>
|
|
1508
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">markdown</span><span class="w"> </span><span class="n">apexHTMLWithMode</span><span class="o">:</span><span class="n">ApexModeGFM</span><span class="p">];</span>
|
|
1509
|
-
</pre>
|
|
1510
|
-
</div>
|
|
1511
|
-
|
|
1512
|
-
<h2 `level` id="mode-constants">
|
|
1513
|
-
Mode Constants
|
|
1514
|
-
</h2>
|
|
1515
|
-
|
|
1516
|
-
<p>
|
|
1517
|
-
Apex provides NSString constants for processor modes to avoid ambiguity and typos:
|
|
1518
|
-
</p>
|
|
1519
|
-
|
|
1520
|
-
<div class="highlight">
|
|
1521
|
-
<pre><span></span><span class="c1">// Available constants</span>
|
|
1522
|
-
<span class="n">ApexModeCommonmark</span><span class="w"> </span><span class="c1">// @"commonmark"</span>
|
|
1523
|
-
<span class="n">ApexModeGFM</span><span class="w"> </span><span class="c1">// @"gfm"</span>
|
|
1524
|
-
<span class="n">ApexModeMultiMarkdown</span><span class="w"> </span><span class="c1">// @"multimarkdown"</span>
|
|
1525
|
-
<span class="n">ApexModeKramdown</span><span class="w"> </span><span class="c1">// @"kramdown"</span>
|
|
1526
|
-
<span class="n">ApexModeUnified</span><span class="w"> </span><span class="c1">// @"unified"</span>
|
|
1527
|
-
</pre>
|
|
1528
|
-
</div>
|
|
1529
|
-
|
|
1530
|
-
<p>
|
|
1531
|
-
<strong>Benefits:</strong>
|
|
1532
|
-
</p>
|
|
1533
|
-
|
|
1534
|
-
<ul>
|
|
1535
|
-
|
|
1536
|
-
<li>
|
|
1537
|
-
<strong>Type safety</strong>: Xcode autocomplete suggests available modes
|
|
1538
|
-
</li>
|
|
1539
|
-
|
|
1540
|
-
<li>
|
|
1541
|
-
<strong>No typos</strong>: Compile-time checking prevents invalid mode strings
|
|
1542
|
-
</li>
|
|
1543
|
-
|
|
1544
|
-
<li>
|
|
1545
|
-
<strong>Self-documenting</strong>: Constants make code more readable
|
|
1546
|
-
</li>
|
|
1547
|
-
|
|
1548
|
-
<li>
|
|
1549
|
-
<strong>Refactoring</strong>: Easy to find all usages if mode names change
|
|
1550
|
-
</li>
|
|
1551
|
-
|
|
1552
|
-
</ul>
|
|
1553
|
-
|
|
1554
|
-
<p>
|
|
1555
|
-
<strong>Example:</strong>
|
|
1556
|
-
</p>
|
|
1557
|
-
|
|
1558
|
-
<div class="highlight">
|
|
1559
|
-
<pre><span></span><span class="c1">// Good: Using constants</span>
|
|
1560
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="n">ApexModeMultiMarkdown</span><span class="p">];</span>
|
|
1561
|
-
|
|
1562
|
-
<span class="c1">// Also works: String literals (for backward compatibility)</span>
|
|
1563
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">html2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">markdown</span><span class="w"> </span><span class="n">mode</span><span class="o">:</span><span class="s">@"multimarkdown"</span><span class="p">];</span>
|
|
1564
|
-
</pre>
|
|
1565
|
-
</div>
|
|
1566
|
-
|
|
1567
|
-
<h2 `NSNumber` id="direct-c-api-usage">
|
|
1568
|
-
Direct C API Usage
|
|
1569
|
-
</h2>
|
|
1570
|
-
|
|
1571
|
-
<p>
|
|
1572
|
-
For more control, use the C API directly:
|
|
1573
|
-
</p>
|
|
1574
|
-
|
|
1575
|
-
<div class="highlight">
|
|
1576
|
-
<pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><Apex/apex.h></span>
|
|
1577
|
-
|
|
1578
|
-
<span class="p">-</span> <span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nf">convertMarkdown:</span><span class="p">(</span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="nv">markdown</span><span class="w"> </span><span class="p">{</span>
|
|
1579
|
-
<span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="n">opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">();</span>
|
|
1580
|
-
<span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1581
|
-
|
|
1582
|
-
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">md</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">markdown</span><span class="w"> </span><span class="n">UTF8String</span><span class="p">];</span>
|
|
1583
|
-
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">html</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">md</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">md</span><span class="p">),</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1584
|
-
|
|
1585
|
-
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1586
|
-
<span class="w"> </span><span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">stringWithUTF8String</span><span class="o">:</span><span class="n">html</span><span class="p">];</span>
|
|
1587
|
-
<span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1588
|
-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span>
|
|
1589
|
-
<span class="w"> </span><span class="p">}</span>
|
|
1590
|
-
|
|
1591
|
-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">nil</span><span class="p">;</span>
|
|
1592
|
-
<span class="p">}</span>
|
|
1593
|
-
</pre>
|
|
1594
|
-
</div>
|
|
1595
|
-
|
|
1596
|
-
<h2 Heading level 1–6 id="integration-example">
|
|
1597
|
-
Integration Example
|
|
1598
|
-
</h2>
|
|
1599
|
-
|
|
1600
|
-
<h3 id="adding-to-marked">
|
|
1601
|
-
Adding to Marked
|
|
1602
|
-
</h3>
|
|
1603
|
-
|
|
1604
|
-
<p>
|
|
1605
|
-
Here’s how to add Apex support to an existing Marked-style application:
|
|
1606
|
-
</p>
|
|
1607
|
-
|
|
1608
|
-
<p>
|
|
1609
|
-
<strong>1. Add to processor selection:</strong>
|
|
1610
|
-
</p>
|
|
1611
|
-
|
|
1612
|
-
<div class="highlight">
|
|
1613
|
-
<pre><span></span><span class="c1">// In MKConductorTransformer.m or similar</span>
|
|
1614
|
-
<span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">([</span><span class="n">processor</span><span class="w"> </span><span class="n">isEqualToString</span><span class="o">:</span><span class="s">@"Apex"</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
|
1615
|
-
<span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithApex</span><span class="o">:</span><span class="n">text</span><span class="p">];</span>
|
|
1616
|
-
<span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">([</span><span class="n">processor</span><span class="w"> </span><span class="n">isEqualToString</span><span class="o">:</span><span class="s">@"MultiMarkdown"</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
|
1617
|
-
<span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="bp">NSString</span><span class="w"> </span><span class="n">convertWithMultiMarkdown</span><span class="o">:</span><span class="n">text</span><span class="p">];</span>
|
|
1618
|
-
<span class="p">}</span>
|
|
1619
|
-
</pre>
|
|
1620
|
-
</div>
|
|
1621
|
-
|
|
1622
|
-
<p>
|
|
1623
|
-
<strong>2. Add to preferences:</strong>
|
|
1624
|
-
</p>
|
|
1625
|
-
|
|
1626
|
-
<div class="highlight">
|
|
1627
|
-
<pre><span></span><span class="c1">// In processor dropdown</span>
|
|
1628
|
-
<span class="bp">NSArray</span><span class="w"> </span><span class="o">*</span><span class="n">processors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="l">@[</span>
|
|
1629
|
-
<span class="w"> </span><span class="s">@"MultiMarkdown"</span><span class="p">,</span>
|
|
1630
|
-
<span class="w"> </span><span class="s">@"Discount (GFM)"</span><span class="p">,</span>
|
|
1631
|
-
<span class="w"> </span><span class="s">@"CommonMark"</span><span class="p">,</span>
|
|
1632
|
-
<span class="w"> </span><span class="s">@"Kramdown"</span><span class="p">,</span>
|
|
1633
|
-
<span class="w"> </span><span class="s">@"Apex"</span><span class="w"> </span><span class="c1">// Add this</span>
|
|
1634
|
-
<span class="l">]</span><span class="p">;</span>
|
|
1635
|
-
</pre>
|
|
1636
|
-
</div>
|
|
1637
|
-
|
|
1638
|
-
<p>
|
|
1639
|
-
<strong>3. Handle custom processor rules:</strong>
|
|
1640
|
-
</p>
|
|
1641
|
-
|
|
1642
|
-
<div class="highlight">
|
|
1643
|
-
<pre><span></span><span class="c1">// In custom processor handling</span>
|
|
1644
|
-
<span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">([</span><span class="n">outputString</span><span class="p">.</span><span class="n">uppercaseString</span><span class="w"> </span><span class="n">isEqualToString</span><span class="o">:</span><span class="s">@"APEX"</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
|
1645
|
-
<span class="w"> </span><span class="p">[</span><span class="n">defaults</span><span class="w"> </span><span class="n">setValue</span><span class="o">:</span><span class="s">@"Apex"</span><span class="w"> </span><span class="n">forKey</span><span class="o">:</span><span class="s">@"defaultProcessor"</span><span class="p">];</span>
|
|
1646
|
-
<span class="p">}</span>
|
|
1647
|
-
</pre>
|
|
1648
|
-
</div>
|
|
1649
|
-
|
|
1650
|
-
<h2 id="build-settings">
|
|
1651
|
-
Build Settings
|
|
1652
|
-
</h2>
|
|
1653
|
-
|
|
1654
|
-
<h3 id="header-search-paths">
|
|
1655
|
-
Header Search Paths
|
|
1656
|
-
</h3>
|
|
1657
|
-
|
|
1658
|
-
<p>
|
|
1659
|
-
Add to “Header Search Paths”:
|
|
1660
|
-
</p>
|
|
1661
|
-
|
|
1662
|
-
<pre><code class="highlight ">$(SRCROOT)/apex/include
|
|
1663
|
-
</code></pre>
|
|
1664
|
-
|
|
1665
|
-
<h3 id="framework-search-paths">
|
|
1666
|
-
Framework Search Paths
|
|
1667
|
-
</h3>
|
|
1668
|
-
|
|
1669
|
-
<p>
|
|
1670
|
-
Add to “Framework Search Paths”:
|
|
1671
|
-
</p>
|
|
1672
|
-
|
|
1673
|
-
<pre><code class="highlight ">$(SRCROOT)/apex/build
|
|
1674
|
-
</code></pre>
|
|
1675
|
-
|
|
1676
|
-
<h3 id="other-linker-flags">
|
|
1677
|
-
Other Linker Flags
|
|
1678
|
-
</h3>
|
|
1679
|
-
|
|
1680
|
-
<p>
|
|
1681
|
-
If using static library:
|
|
1682
|
-
</p>
|
|
1683
|
-
|
|
1684
|
-
<pre><code class="highlight ">-L$(SRCROOT)/apex/build -lapex
|
|
1685
|
-
</code></pre>
|
|
1686
|
-
|
|
1687
|
-
<h3 `text` id="swift-api-support">
|
|
1688
|
-
Swift API Support
|
|
1689
|
-
</h3>
|
|
1690
|
-
|
|
1691
|
-
<p>
|
|
1692
|
-
To use the idiomatic Swift API (<code>Apex.swift</code>):
|
|
1693
|
-
</p>
|
|
1694
|
-
|
|
1695
|
-
<ol>
|
|
1696
|
-
|
|
1697
|
-
<li>
|
|
1698
|
-
<strong>If using the framework:</strong> The Swift file is automatically included when you link <code>Apex.framework</code>
|
|
1699
|
-
</li>
|
|
1700
|
-
|
|
1701
|
-
<li>
|
|
1702
|
-
<strong>If using source files directly:</strong> Add <code>apex/objc/Apex.swift</code> to your Xcode project
|
|
1703
|
-
</li>
|
|
1704
|
-
|
|
1705
|
-
<li>
|
|
1706
|
-
<strong>Swift/Objective-C Bridging:</strong> Xcode will automatically create a bridging header if needed
|
|
1707
|
-
</li>
|
|
1708
|
-
|
|
1709
|
-
</ol>
|
|
1710
|
-
|
|
1711
|
-
<p>
|
|
1712
|
-
The Swift API provides:
|
|
1713
|
-
</p>
|
|
1714
|
-
|
|
1715
|
-
<ul>
|
|
1716
|
-
|
|
1717
|
-
<li>
|
|
1718
|
-
Type-safe <code>ApexMode</code> enum instead of string constants
|
|
1719
|
-
</li>
|
|
1720
|
-
|
|
1721
|
-
<li>
|
|
1722
|
-
<code>ApexOptions</code> struct for configuration
|
|
1723
|
-
</li>
|
|
1724
|
-
|
|
1725
|
-
<li>
|
|
1726
|
-
Idiomatic String extensions
|
|
1727
|
-
</li>
|
|
1728
|
-
|
|
1729
|
-
<li>
|
|
1730
|
-
Static <code>Apex</code> converter struct
|
|
1731
|
-
</li>
|
|
1732
|
-
|
|
1733
|
-
</ul>
|
|
1734
|
-
|
|
1735
|
-
<h2 `NSString` id="swift-integration">
|
|
1736
|
-
Swift Integration
|
|
1737
|
-
</h2>
|
|
1738
|
-
|
|
1739
|
-
<p>
|
|
1740
|
-
Apex provides an idiomatic Swift API wrapper (<code>Apex.swift</code>) that offers type-safe enums and structs over the Objective-C API.
|
|
1741
|
-
</p>
|
|
1742
|
-
|
|
1743
|
-
<h3 Display title id="idiomatic-swift-api-recommended">
|
|
1744
|
-
Idiomatic Swift API (Recommended)
|
|
1745
|
-
</h3>
|
|
1746
|
-
|
|
1747
|
-
<div class="highlight">
|
|
1748
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Foundation</span>
|
|
1749
|
-
<span class="c1">// Import Apex.swift (automatically available when framework is linked)</span>
|
|
1750
|
-
|
|
1751
|
-
<span class="c1">// Basic conversion with default unified mode</span>
|
|
1752
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">markdown</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"# Hello World"</span>
|
|
1753
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">()</span>
|
|
1754
|
-
|
|
1755
|
-
<span class="c1">// With type-safe mode enum</span>
|
|
1756
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">gfmHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">gfm</span><span class="p">)</span>
|
|
1757
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">mmdHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">multimarkdown</span><span class="p">)</span>
|
|
1758
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">kramdownHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">kramdown</span><span class="p">)</span>
|
|
1759
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">commonmarkHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">commonmark</span><span class="p">)</span>
|
|
1760
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">unifiedHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">)</span>
|
|
1761
|
-
|
|
1762
|
-
<span class="c1">// Using ApexOptions struct (type-safe)</span>
|
|
1763
|
-
<span class="kd">var</span><span class="w"> </span><span class="nv">options</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexOptions</span><span class="p">()</span>
|
|
1764
|
-
<span class="n">options</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1765
|
-
<span class="n">options</span><span class="p">.</span><span class="n">standalone</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1766
|
-
<span class="n">options</span><span class="p">.</span><span class="n">stylesheet</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"style.css"</span>
|
|
1767
|
-
<span class="n">options</span><span class="p">.</span><span class="n">title</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"My Document"</span>
|
|
1768
|
-
<span class="n">options</span><span class="p">.</span><span class="n">generateHeaderIDs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1769
|
-
<span class="n">options</span><span class="p">.</span><span class="n">hardBreaks</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1770
|
-
<span class="n">options</span><span class="p">.</span><span class="n">obfuscateEmails</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1771
|
-
|
|
1772
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">configuredHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span><span class="p">)</span>
|
|
1773
|
-
|
|
1774
|
-
<span class="c1">// Or use static Apex converter</span>
|
|
1775
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Apex</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span><span class="n">markdown</span><span class="p">)</span>
|
|
1776
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html3</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Apex</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">gfm</span><span class="p">)</span>
|
|
1777
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html4</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Apex</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span><span class="p">)</span>
|
|
1778
|
-
|
|
1779
|
-
<span class="c1">// Standalone HTML document</span>
|
|
1780
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">standaloneHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span>
|
|
1781
|
-
<span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span>
|
|
1782
|
-
<span class="w"> </span><span class="n">standalone</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
|
1783
|
-
<span class="w"> </span><span class="n">stylesheet</span><span class="p">:</span><span class="w"> </span><span class="s">"style.css"</span><span class="p">,</span>
|
|
1784
|
-
<span class="w"> </span><span class="n">title</span><span class="p">:</span><span class="w"> </span><span class="s">"My Document"</span>
|
|
1785
|
-
<span class="p">)</span>
|
|
1786
|
-
|
|
1787
|
-
<span class="c1">// Pretty-printed HTML</span>
|
|
1788
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">prettyHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">pretty</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">)</span>
|
|
1789
|
-
|
|
1790
|
-
<span class="c1">// Common options combined</span>
|
|
1791
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">commonOptionsHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span>
|
|
1792
|
-
<span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span>
|
|
1793
|
-
<span class="w"> </span><span class="n">generateHeaderIDs</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
|
1794
|
-
<span class="w"> </span><span class="n">hardBreaks</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
|
1795
|
-
<span class="w"> </span><span class="n">pretty</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
|
1796
|
-
<span class="p">)</span>
|
|
1797
|
-
</pre>
|
|
1798
|
-
</div>
|
|
1799
|
-
|
|
1800
|
-
<h3 id="apexmode-enum">
|
|
1801
|
-
ApexMode Enum
|
|
1802
|
-
</h3>
|
|
1803
|
-
|
|
1804
|
-
<p>
|
|
1805
|
-
Type-safe processor mode enum:
|
|
1806
|
-
</p>
|
|
1807
|
-
|
|
1808
|
-
<div class="highlight">
|
|
1809
|
-
<pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">enum</span><span class="w"> </span><span class="nc">ApexMode</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">,</span><span class="w"> </span><span class="n">CaseIterable</span><span class="w"> </span><span class="p">{</span>
|
|
1810
|
-
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">commonmark</span>
|
|
1811
|
-
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">gfm</span>
|
|
1812
|
-
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">multimarkdown</span>
|
|
1813
|
-
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">kramdown</span>
|
|
1814
|
-
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">unified</span>
|
|
1815
|
-
<span class="p">}</span>
|
|
1816
|
-
</pre>
|
|
1817
|
-
</div>
|
|
1818
|
-
|
|
1819
|
-
<h3 `id` id="apexoptions-struct">
|
|
1820
|
-
ApexOptions Struct
|
|
1821
|
-
</h3>
|
|
1822
|
-
|
|
1823
|
-
<p>
|
|
1824
|
-
Type-safe options configuration:
|
|
1825
|
-
</p>
|
|
1826
|
-
|
|
1827
|
-
<div class="highlight">
|
|
1828
|
-
<pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="nc">ApexOptions</span><span class="w"> </span><span class="p">{</span>
|
|
1829
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">pretty</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1830
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">standalone</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1831
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">stylesheet</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">?</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">nil</span>
|
|
1832
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">title</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">?</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">nil</span>
|
|
1833
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">hardBreaks</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1834
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">generateHeaderIDs</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1835
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">unsafe</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1836
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">headerAnchors</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1837
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">obfuscateEmails</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1838
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">embedImages</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1839
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nv">enablePlugins</span><span class="p">:</span><span class="w"> </span><span class="nb">Bool</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span>
|
|
1840
|
-
|
|
1841
|
-
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">`</span><span class="k">default</span><span class="p">`</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexOptions</span><span class="p">()</span>
|
|
1842
|
-
<span class="p">}</span>
|
|
1843
|
-
</pre>
|
|
1844
|
-
</div>
|
|
1845
|
-
|
|
1846
|
-
<p>
|
|
1847
|
-
<strong>Example usage:</strong>
|
|
1848
|
-
</p>
|
|
1849
|
-
|
|
1850
|
-
<div class="highlight">
|
|
1851
|
-
<pre><span></span><span class="kd">var</span><span class="w"> </span><span class="nv">options</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexOptions</span><span class="p">.</span><span class="k">default</span>
|
|
1852
|
-
<span class="n">options</span><span class="p">.</span><span class="n">pretty</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1853
|
-
<span class="n">options</span><span class="p">.</span><span class="n">generateHeaderIDs</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1854
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">gfm</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span><span class="p">)</span>
|
|
1855
|
-
</pre>
|
|
1856
|
-
</div>
|
|
1857
|
-
|
|
1858
|
-
<h3 `NSString` id="apexoptions-vs-apexoptions">
|
|
1859
|
-
ApexOptions vs apex_options
|
|
1860
|
-
</h3>
|
|
1861
|
-
|
|
1862
|
-
<p>
|
|
1863
|
-
Use <code>ApexOptions</code> for most Swift code, and use <code>apex_options</code> only for low-level or plugin-focused use cases.
|
|
1864
|
-
</p>
|
|
1865
|
-
|
|
1866
|
-
<ul>
|
|
1867
|
-
|
|
1868
|
-
<li>
|
|
1869
|
-
<code>ApexOptions</code> is the high-level Swift API and is the recommended default for app code.
|
|
1870
|
-
</li>
|
|
1871
|
-
|
|
1872
|
-
<li>
|
|
1873
|
-
<code>apex_options</code> is the C struct and exposes advanced flags that may not be surfaced in <code>ApexOptions</code>.
|
|
1874
|
-
</li>
|
|
1875
|
-
|
|
1876
|
-
<li>
|
|
1877
|
-
For direct C struct field access in Swift, import both modules:
|
|
1878
|
-
</li>
|
|
1879
|
-
|
|
1880
|
-
</ul>
|
|
1881
|
-
|
|
1882
|
-
<div class="highlight">
|
|
1883
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Apex</span>
|
|
1884
|
-
<span class="kd">import</span><span class="w"> </span><span class="nc">ApexC</span>
|
|
1885
|
-
</pre>
|
|
1886
|
-
</div>
|
|
1887
|
-
|
|
1888
|
-
<p>
|
|
1889
|
-
You can get a default C options struct from the Objective-C bridge:
|
|
1890
|
-
</p>
|
|
1891
|
-
|
|
1892
|
-
<div class="highlight">
|
|
1893
|
-
<pre><span></span><span class="kd">var</span><span class="w"> </span><span class="nv">cOptions</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="bp">NSString</span><span class="p">.</span><span class="n">defaultApexOptions</span><span class="p">()</span>
|
|
1894
|
-
<span class="n">cOptions</span><span class="p">.</span><span class="n">enable_callouts</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1895
|
-
<span class="n">cOptions</span><span class="p">.</span><span class="n">enable_plugins</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1896
|
-
</pre>
|
|
1897
|
-
</div>
|
|
1898
|
-
|
|
1899
|
-
<p>
|
|
1900
|
-
Use this pattern when integrating plugins or other advanced features that require direct control over C-level options.
|
|
1901
|
-
</p>
|
|
1902
|
-
|
|
1903
|
-
<h3 Fragment id (same rules as `--id-format` / manual IDs) id="objective-c-bridge-alternative">
|
|
1904
|
-
Objective-C Bridge (Alternative)
|
|
1905
|
-
</h3>
|
|
1906
|
-
|
|
1907
|
-
<p>
|
|
1908
|
-
You can also use the Objective-C API directly from Swift:
|
|
1909
|
-
</p>
|
|
1910
|
-
|
|
1911
|
-
<div class="highlight">
|
|
1912
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Foundation</span>
|
|
1913
|
-
|
|
1914
|
-
<span class="c1">// Use Objective-C wrapper</span>
|
|
1915
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="bp">NSString</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span><span class="n">withApex</span><span class="p">:</span><span class="w"> </span><span class="n">markdownText</span><span class="p">)</span>
|
|
1916
|
-
|
|
1917
|
-
<span class="c1">// With mode constants</span>
|
|
1918
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">gfmHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="bp">NSString</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span><span class="n">withApex</span><span class="p">:</span><span class="w"> </span><span class="n">markdownText</span><span class="p">,</span><span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="n">ApexModeGFM</span><span class="p">)</span>
|
|
1919
|
-
|
|
1920
|
-
<span class="c1">// Dictionary-based options</span>
|
|
1921
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="nb">String</span><span class="p">:</span><span class="w"> </span><span class="nb">Any</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[</span>
|
|
1922
|
-
<span class="w"> </span><span class="s">"pretty"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
|
1923
|
-
<span class="w"> </span><span class="s">"standalone"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
|
1924
|
-
<span class="w"> </span><span class="s">"stylesheet"</span><span class="p">:</span><span class="w"> </span><span class="s">"style.css"</span>
|
|
1925
|
-
<span class="p">]</span>
|
|
1926
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">configuredHtml</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="bp">NSString</span><span class="p">.</span><span class="n">convert</span><span class="p">(</span>
|
|
1927
|
-
<span class="w"> </span><span class="n">withApex</span><span class="p">:</span><span class="w"> </span><span class="n">markdownText</span><span class="p">,</span>
|
|
1928
|
-
<span class="w"> </span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="n">ApexModeUnified</span><span class="p">,</span>
|
|
1929
|
-
<span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span>
|
|
1930
|
-
<span class="p">)</span>
|
|
1931
|
-
</pre>
|
|
1932
|
-
</div>
|
|
1933
|
-
|
|
1934
|
-
<p>
|
|
1935
|
-
For direct C API access, create a Swift bridging header:
|
|
1936
|
-
</p>
|
|
1937
|
-
|
|
1938
|
-
<div class="highlight">
|
|
1939
|
-
<pre><span></span><span class="c1">// Bridging header</span>
|
|
1940
|
-
<span class="p">#</span><span class="kd">import</span><span class="w"> </span><span class="p"><</span><span class="nc">Apex</span><span class="o">/</span><span class="nc">apex</span><span class="p">.</span><span class="nc">h</span><span class="p">></span>
|
|
1941
|
-
|
|
1942
|
-
<span class="c1">// Swift code</span>
|
|
1943
|
-
<span class="kd">func</span><span class="w"> </span><span class="nf">convertMarkdown</span><span class="p">(</span><span class="kc">_</span><span class="w"> </span><span class="n">text</span><span class="p">:</span><span class="w"> </span><span class="nb">String</span><span class="p">)</span><span class="w"> </span><span class="p">-></span><span class="w"> </span><span class="nb">String</span><span class="p">?</span><span class="w"> </span><span class="p">{</span>
|
|
1944
|
-
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">opts</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">()</span>
|
|
1945
|
-
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">cString</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="n">utf8CString</span>
|
|
1946
|
-
<span class="w"> </span><span class="k">guard</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">cString</span><span class="p">,</span><span class="w"> </span><span class="n">text</span><span class="p">.</span><span class="n">utf8</span><span class="p">.</span><span class="bp">count</span><span class="p">,</span><span class="w"> </span><span class="p">&</span><span class="n">opts</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
|
1947
|
-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">nil</span>
|
|
1948
|
-
<span class="w"> </span><span class="p">}</span>
|
|
1949
|
-
<span class="w"> </span><span class="k">defer</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
1950
|
-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">String</span><span class="p">(</span><span class="n">cString</span><span class="p">:</span><span class="w"> </span><span class="n">html</span><span class="p">)</span>
|
|
1951
|
-
<span class="p">}</span>
|
|
1952
|
-
</pre>
|
|
1953
|
-
</div>
|
|
1954
|
-
|
|
1955
|
-
<h2 id="plugin-catalog-and-installation">
|
|
1956
|
-
Plugin Catalog and Installation
|
|
1957
|
-
</h2>
|
|
1958
|
-
|
|
1959
|
-
<p>
|
|
1960
|
-
Apex exposes a first-class API for building plugin picker UIs in macOS and iOS apps. Fetch the central plugin directory, list installed plugins, and install or uninstall without shelling out to the CLI.
|
|
1961
|
-
</p>
|
|
1962
|
-
|
|
1963
|
-
<h3 id="swift-api-recommended">
|
|
1964
|
-
Swift API (recommended)
|
|
1965
|
-
</h3>
|
|
1966
|
-
|
|
1967
|
-
<div class="highlight">
|
|
1968
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Apex</span>
|
|
1969
|
-
|
|
1970
|
-
<span class="c1">// Fetch available plugins from apex-plugins.json</span>
|
|
1971
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">available</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">ApexPluginManager</span><span class="p">.</span><span class="n">fetchAvailable</span><span class="p">()</span>
|
|
1972
|
-
|
|
1973
|
-
<span class="k">for</span><span class="w"> </span><span class="n">plugin</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">available</span><span class="w"> </span><span class="p">{</span>
|
|
1974
|
-
<span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="n">plugin</span><span class="p">.</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">plugin</span><span class="p">.</span><span class="n">title</span><span class="w"> </span><span class="p">??</span><span class="w"> </span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="n">plugin</span><span class="p">.</span><span class="n">repo</span><span class="w"> </span><span class="p">??</span><span class="w"> </span><span class="s">""</span><span class="p">)</span>
|
|
1975
|
-
<span class="p">}</span>
|
|
1976
|
-
|
|
1977
|
-
<span class="c1">// List installed plugins (project + user-global)</span>
|
|
1978
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">installed</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexPluginManager</span><span class="p">.</span><span class="n">installed</span><span class="p">(</span><span class="n">baseDirectory</span><span class="p">:</span><span class="w"> </span><span class="n">documentFolder</span><span class="p">.</span><span class="n">path</span><span class="p">)</span>
|
|
1979
|
-
|
|
1980
|
-
<span class="c1">// Install from the curated directory</span>
|
|
1981
|
-
<span class="k">try</span><span class="w"> </span><span class="n">ApexPluginManager</span><span class="p">.</span><span class="n">install</span><span class="p">(</span><span class="n">id</span><span class="p">:</span><span class="w"> </span><span class="s">"kbd"</span><span class="p">)</span>
|
|
1982
|
-
|
|
1983
|
-
<span class="c1">// Install from a Git URL (requires explicit opt-in)</span>
|
|
1984
|
-
<span class="k">try</span><span class="w"> </span><span class="n">ApexPluginManager</span><span class="p">.</span><span class="n">install</span><span class="p">(</span>
|
|
1985
|
-
<span class="w"> </span><span class="n">idOrRepository</span><span class="p">:</span><span class="w"> </span><span class="s">"https://github.com/ApexMarkdown/apex-plugin-kbd.git"</span><span class="p">,</span>
|
|
1986
|
-
<span class="w"> </span><span class="n">allowUntrustedSource</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span>
|
|
1987
|
-
<span class="p">)</span>
|
|
1988
|
-
|
|
1989
|
-
<span class="c1">// Uninstall from ~/.config/apex/plugins</span>
|
|
1990
|
-
<span class="k">try</span><span class="w"> </span><span class="n">ApexPluginManager</span><span class="p">.</span><span class="n">uninstall</span><span class="p">(</span><span class="n">id</span><span class="p">:</span><span class="w"> </span><span class="s">"kbd"</span><span class="p">)</span>
|
|
1991
|
-
|
|
1992
|
-
<span class="c1">// Enable plugins when converting</span>
|
|
1993
|
-
<span class="kd">var</span><span class="w"> </span><span class="nv">options</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">ApexOptions</span><span class="p">()</span>
|
|
1994
|
-
<span class="n">options</span><span class="p">.</span><span class="n">enablePlugins</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span>
|
|
1995
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="n">apexHTML</span><span class="p">(</span><span class="n">mode</span><span class="p">:</span><span class="w"> </span><span class="p">.</span><span class="n">unified</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="n">options</span><span class="p">)</span>
|
|
1996
|
-
</pre>
|
|
1997
|
-
</div>
|
|
1998
|
-
|
|
1999
|
-
<p>
|
|
2000
|
-
<code>ApexPluginInfo</code> is <code>Identifiable</code> and includes <code>id</code>, <code>title</code>, <code>description</code>, <code>author</code>, <code>homepage</code>, and <code>repo</code>.
|
|
2001
|
-
</p>
|
|
2002
|
-
|
|
2003
|
-
<h3 id="objective-c-api">
|
|
2004
|
-
Objective-C API
|
|
2005
|
-
</h3>
|
|
2006
|
-
|
|
2007
|
-
<div class="highlight">
|
|
2008
|
-
<pre><span></span><span class="cp">#import "NSString+ApexPlugins.h"</span>
|
|
2009
|
-
|
|
2010
|
-
<span class="bp">NSError</span><span class="w"> </span><span class="o">*</span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">nil</span><span class="p">;</span>
|
|
2011
|
-
<span class="bp">NSArray</span><span class="o"><</span><span class="n">ApexPluginInfo</span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="n">available</span><span class="w"> </span><span class="o">=</span>
|
|
2012
|
-
<span class="w"> </span><span class="p">[</span><span class="n">ApexPluginCatalog</span><span class="w"> </span><span class="n">fetchAvailablePlugins</span><span class="o">:&</span><span class="n">error</span><span class="p">];</span>
|
|
2013
|
-
<span class="k">if</span><span class="w"> </span><span class="o"><!--</span><span class="n">IDX</span><span class="o">:</span><span class="n">idxref</span><span class="mi">-0</span><span class="o">--></span><span class="w"> </span><span class="p">{</span>
|
|
2014
|
-
<span class="w"> </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@"Fetch failed: %@"</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
|
|
2015
|
-
<span class="p">}</span>
|
|
2016
|
-
|
|
2017
|
-
<span class="bp">NSArray</span><span class="o"><</span><span class="n">ApexPluginInfo</span><span class="w"> </span><span class="o">*></span><span class="w"> </span><span class="o">*</span><span class="n">installed</span><span class="w"> </span><span class="o">=</span>
|
|
2018
|
-
<span class="w"> </span><span class="p">[</span><span class="n">ApexPluginCatalog</span><span class="w"> </span><span class="n">installedPluginsWithBaseDirectory</span><span class="o">:</span><span class="n">documentPath</span><span class="p">];</span>
|
|
2019
|
-
|
|
2020
|
-
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="p">[</span><span class="n">ApexPluginCatalog</span><span class="w"> </span><span class="n">installPluginWithId</span><span class="o">:</span><span class="s">@"kbd"</span><span class="w"> </span><span class="n">error</span><span class="o">:&</span><span class="n">error</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
|
|
2021
|
-
<span class="w"> </span><span class="n">NSLog</span><span class="p">(</span><span class="s">@"Install failed: %@"</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
|
|
2022
|
-
<span class="p">}</span>
|
|
2023
|
-
|
|
2024
|
-
<span class="bp">NSString</span><span class="w"> </span><span class="o">*</span><span class="n">pluginsDir</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">ApexPluginCatalog</span><span class="w"> </span><span class="n">globalPluginsDirectory</span><span class="p">];</span>
|
|
2025
|
-
</pre>
|
|
2026
|
-
</div>
|
|
2027
|
-
|
|
2028
|
-
<h3 id="c-api">
|
|
2029
|
-
C API
|
|
2030
|
-
</h3>
|
|
2031
|
-
|
|
2032
|
-
<p>
|
|
2033
|
-
For direct C integration, see <a href="C-API#plugin-catalog-api">C API - Plugin Catalog API</a>. Include <code>apex/plugins.h</code> or <code>apexc.h</code>.
|
|
2034
|
-
</p>
|
|
2035
|
-
|
|
2036
|
-
<p>
|
|
2037
|
-
<strong>Requirements:</strong> Catalog fetch uses <code>curl</code>. Install/uninstall uses <code>git clone</code> and writes to <code>~/.config/apex/plugins</code> (or <code>$XDG_CONFIG_HOME/apex/plugins</code>). Confirm untrusted sources in your UI before calling install with <code>allowUntrustedSource: true</code>.
|
|
2038
|
-
</p>
|
|
2039
|
-
|
|
2040
|
-
<h2 id="troubleshooting">
|
|
2041
|
-
Troubleshooting
|
|
2042
|
-
</h2>
|
|
2043
|
-
|
|
2044
|
-
<h3 id="swift-package-manager-issues">
|
|
2045
|
-
Swift Package Manager Issues
|
|
2046
|
-
</h3>
|
|
2047
|
-
|
|
2048
|
-
<p>
|
|
2049
|
-
<strong>Package Resolution Fails:</strong>
|
|
2050
|
-
</p>
|
|
2051
|
-
|
|
2052
|
-
<ul>
|
|
2053
|
-
|
|
2054
|
-
<li>
|
|
2055
|
-
Ensure you have an active internet connection
|
|
2056
|
-
</li>
|
|
2057
|
-
|
|
2058
|
-
<li>
|
|
2059
|
-
Check that the repository URL is correct: <code>https://github.com/ApexMarkdown/apex</code>
|
|
2060
|
-
</li>
|
|
2061
|
-
|
|
2062
|
-
<li>
|
|
2063
|
-
Try cleaning derived data: <code>File > Packages > Reset Package Caches</code>
|
|
2064
|
-
</li>
|
|
2065
|
-
|
|
2066
|
-
<li>
|
|
2067
|
-
Verify your Xcode version supports the required Swift tools version (5.7+)
|
|
2068
|
-
</li>
|
|
2069
|
-
|
|
2070
|
-
</ul>
|
|
2071
|
-
|
|
2072
|
-
<p>
|
|
2073
|
-
<strong>Build Errors:</strong>
|
|
2074
|
-
</p>
|
|
2075
|
-
|
|
2076
|
-
<ul>
|
|
2077
|
-
|
|
2078
|
-
<li>
|
|
2079
|
-
Ensure your deployment target matches Apex’s requirements (macOS 10.13+, iOS 11+)
|
|
2080
|
-
</li>
|
|
2081
|
-
|
|
2082
|
-
<li>
|
|
2083
|
-
Clean build folder: <code>Product > Clean Build Folder</code> (Shift+Cmd+K)
|
|
2084
|
-
</li>
|
|
2085
|
-
|
|
2086
|
-
<li>
|
|
2087
|
-
Try removing and re-adding the package dependency
|
|
2088
|
-
</li>
|
|
2089
|
-
|
|
2090
|
-
</ul>
|
|
2091
|
-
|
|
2092
|
-
<p>
|
|
2093
|
-
<strong>Module Not Found:</strong>
|
|
2094
|
-
</p>
|
|
2095
|
-
|
|
2096
|
-
<ul>
|
|
2097
|
-
|
|
2098
|
-
<li>
|
|
2099
|
-
Ensure you’ve imported the module: <code>import Apex</code>
|
|
2100
|
-
</li>
|
|
2101
|
-
|
|
2102
|
-
<li>
|
|
2103
|
-
Check that the Apex library product is added to your target’s dependencies
|
|
2104
|
-
</li>
|
|
2105
|
-
|
|
2106
|
-
<li>
|
|
2107
|
-
Verify the package resolved successfully in the Package Dependencies tab
|
|
2108
|
-
</li>
|
|
2109
|
-
|
|
2110
|
-
</ul>
|
|
2111
|
-
|
|
2112
|
-
<p>
|
|
2113
|
-
<strong>C options visible but fields unavailable:</strong>
|
|
2114
|
-
</p>
|
|
2115
|
-
|
|
2116
|
-
<ul>
|
|
2117
|
-
|
|
2118
|
-
<li>
|
|
2119
|
-
If <code>apex_options</code> appears in quick help but field access fails, add <code>import ApexC</code> next to <code>import Apex</code>
|
|
2120
|
-
</li>
|
|
2121
|
-
|
|
2122
|
-
<li>
|
|
2123
|
-
Clean and rebuild (<code>Product > Clean Build Folder</code>) to refresh Xcode indexing and module cache
|
|
2124
|
-
</li>
|
|
2125
|
-
|
|
2126
|
-
</ul>
|
|
2127
|
-
|
|
2128
|
-
<h3 id="framework-not-found">
|
|
2129
|
-
Framework Not Found
|
|
2130
|
-
</h3>
|
|
2131
|
-
|
|
2132
|
-
<p>
|
|
2133
|
-
Ensure the framework is:
|
|
2134
|
-
</p>
|
|
2135
|
-
|
|
2136
|
-
<ol>
|
|
2137
|
-
|
|
2138
|
-
<li>
|
|
2139
|
-
Added to “Frameworks, Libraries, and Embedded Content”
|
|
2140
|
-
</li>
|
|
2141
|
-
|
|
2142
|
-
<li>
|
|
2143
|
-
Set to “Embed & Sign”
|
|
2144
|
-
</li>
|
|
2145
|
-
|
|
2146
|
-
<li>
|
|
2147
|
-
Framework search paths are correct
|
|
2148
|
-
</li>
|
|
2149
|
-
|
|
2150
|
-
</ol>
|
|
2151
|
-
|
|
2152
|
-
<h3 id="linker-errors">
|
|
2153
|
-
Linker Errors
|
|
2154
|
-
</h3>
|
|
2155
|
-
|
|
2156
|
-
<ul>
|
|
2157
|
-
|
|
2158
|
-
<li>
|
|
2159
|
-
Ensure <code>Apex.framework</code> is linked (or Apex package is added via SPM)
|
|
2160
|
-
</li>
|
|
2161
|
-
|
|
2162
|
-
<li>
|
|
2163
|
-
Check framework search paths
|
|
2164
|
-
</li>
|
|
2165
|
-
|
|
2166
|
-
<li>
|
|
2167
|
-
Verify architecture matches (arm64 vs x86_64)
|
|
2168
|
-
</li>
|
|
2169
|
-
|
|
2170
|
-
</ul>
|
|
2171
|
-
|
|
2172
|
-
<h3 id="runtime-errors">
|
|
2173
|
-
Runtime Errors
|
|
2174
|
-
</h3>
|
|
2175
|
-
|
|
2176
|
-
<ul>
|
|
2177
|
-
|
|
2178
|
-
<li>
|
|
2179
|
-
Ensure framework is embedded (not just linked) if using framework method
|
|
2180
|
-
</li>
|
|
2181
|
-
|
|
2182
|
-
<li>
|
|
2183
|
-
Check code signing settings
|
|
2184
|
-
</li>
|
|
2185
|
-
|
|
2186
|
-
<li>
|
|
2187
|
-
Verify framework is built for correct deployment target
|
|
2188
|
-
</li>
|
|
2189
|
-
|
|
2190
|
-
<li>
|
|
2191
|
-
For SPM: Ensure the package is properly resolved and built
|
|
2192
|
-
</li>
|
|
2193
|
-
|
|
2194
|
-
</ul>
|
|
2195
|
-
|
|
2196
|
-
<h2 id="performance">
|
|
2197
|
-
Performance
|
|
2198
|
-
</h2>
|
|
2199
|
-
|
|
2200
|
-
<p>
|
|
2201
|
-
Apex is built on cmark-gfm, which is highly optimized:
|
|
2202
|
-
</p>
|
|
2203
|
-
|
|
2204
|
-
<ul>
|
|
2205
|
-
|
|
2206
|
-
<li>
|
|
2207
|
-
Small documents (< 10KB): < 10ms
|
|
2208
|
-
</li>
|
|
2209
|
-
|
|
2210
|
-
<li>
|
|
2211
|
-
Medium documents (< 100KB): < 100ms
|
|
2212
|
-
</li>
|
|
2213
|
-
|
|
2214
|
-
<li>
|
|
2215
|
-
Large documents (< 1MB): < 1s
|
|
2216
|
-
</li>
|
|
2217
|
-
|
|
2218
|
-
</ul>
|
|
2219
|
-
|
|
2220
|
-
<p>
|
|
2221
|
-
The Objective-C wrapper adds minimal overhead.
|
|
2222
|
-
</p>
|
|
2223
|
-
|
|
2224
|
-
<h2 id="module-map">
|
|
2225
|
-
Module Map
|
|
2226
|
-
</h2>
|
|
2227
|
-
|
|
2228
|
-
<p>
|
|
2229
|
-
Apex includes a module map (<code>include/apex/module.modulemap</code>) that allows Swift to import the C API directly:
|
|
2230
|
-
</p>
|
|
2231
|
-
|
|
2232
|
-
<div class="highlight">
|
|
2233
|
-
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">Apex</span>
|
|
2234
|
-
|
|
2235
|
-
<span class="c1">// Direct C API access (advanced usage)</span>
|
|
2236
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">opts</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_options_default</span><span class="p">()</span>
|
|
2237
|
-
<span class="c1">// ... configure options ...</span>
|
|
2238
|
-
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">apex_markdown_to_html</span><span class="p">(</span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">markdown</span><span class="p">.</span><span class="bp">count</span><span class="p">,</span><span class="w"> </span><span class="p">&</span><span class="n">opts</span><span class="p">)</span>
|
|
2239
|
-
</pre>
|
|
2240
|
-
</div>
|
|
2241
|
-
|
|
2242
|
-
<p>
|
|
2243
|
-
The module map is automatically included when using SPM or the framework.
|
|
2244
|
-
</p>
|
|
2245
|
-
|
|
2246
|
-
<h2 id="comparison-of-integration-methods">
|
|
2247
|
-
Comparison of Integration Methods
|
|
2248
|
-
</h2>
|
|
2249
|
-
|
|
2250
|
-
<table>
|
|
2251
|
-
|
|
2252
|
-
<thead>
|
|
2253
|
-
|
|
2254
|
-
<tr>
|
|
2255
|
-
|
|
2256
|
-
<th>
|
|
2257
|
-
Method
|
|
2258
|
-
</th>
|
|
2259
|
-
|
|
2260
|
-
<th>
|
|
2261
|
-
Ease of Use
|
|
2262
|
-
</th>
|
|
2263
|
-
|
|
2264
|
-
<th>
|
|
2265
|
-
Platform Support
|
|
2266
|
-
</th>
|
|
2267
|
-
|
|
2268
|
-
<th>
|
|
2269
|
-
Maintenance
|
|
2270
|
-
</th>
|
|
2271
|
-
|
|
2272
|
-
</tr>
|
|
2273
|
-
|
|
2274
|
-
</thead>
|
|
2275
|
-
|
|
2276
|
-
<tbody>
|
|
2277
|
-
|
|
2278
|
-
<tr>
|
|
2279
|
-
|
|
2280
|
-
<td>
|
|
2281
|
-
<strong>Swift Package Manager</strong>
|
|
2282
|
-
</td>
|
|
2283
|
-
|
|
2284
|
-
<td>
|
|
2285
|
-
⭐⭐⭐⭐⭐
|
|
2286
|
-
</td>
|
|
2287
|
-
|
|
2288
|
-
<td>
|
|
2289
|
-
macOS + iOS
|
|
2290
|
-
</td>
|
|
2291
|
-
|
|
2292
|
-
<td>
|
|
2293
|
-
Automatic updates
|
|
2294
|
-
</td>
|
|
2295
|
-
|
|
2296
|
-
</tr>
|
|
2297
|
-
<tr>
|
|
2298
|
-
|
|
2299
|
-
<td>
|
|
2300
|
-
Framework
|
|
2301
|
-
</td>
|
|
2302
|
-
|
|
2303
|
-
<td>
|
|
2304
|
-
⭐⭐⭐
|
|
2305
|
-
</td>
|
|
2306
|
-
|
|
2307
|
-
<td>
|
|
2308
|
-
macOS only
|
|
2309
|
-
</td>
|
|
2310
|
-
|
|
2311
|
-
<td>
|
|
2312
|
-
Manual updates
|
|
2313
|
-
</td>
|
|
2314
|
-
|
|
2315
|
-
</tr>
|
|
2316
|
-
<tr>
|
|
2317
|
-
|
|
2318
|
-
<td>
|
|
2319
|
-
CMake
|
|
2320
|
-
</td>
|
|
2321
|
-
|
|
2322
|
-
<td>
|
|
2323
|
-
⭐⭐
|
|
2324
|
-
</td>
|
|
2325
|
-
|
|
2326
|
-
<td>
|
|
2327
|
-
macOS + Linux
|
|
2328
|
-
</td>
|
|
2329
|
-
|
|
2330
|
-
<td>
|
|
2331
|
-
Manual integration
|
|
2332
|
-
</td>
|
|
2333
|
-
|
|
2334
|
-
</tr>
|
|
2335
|
-
</tbody>
|
|
2336
|
-
|
|
2337
|
-
</table>
|
|
2338
|
-
|
|
2339
|
-
<p>
|
|
2340
|
-
<strong>Recommendation:</strong> Use Swift Package Manager for the easiest integration and best cross-platform support.
|
|
2341
|
-
</p>
|
|
2342
|
-
|
|
2343
|
-
<h2 id="related">
|
|
2344
|
-
Related
|
|
2345
|
-
</h2>
|
|
2346
|
-
|
|
2347
|
-
<ul>
|
|
2348
|
-
|
|
2349
|
-
<li>
|
|
2350
|
-
<a href="C-API.html">C API</a> - Direct C API documentation (includes plugin catalog API)
|
|
2351
|
-
</li>
|
|
2352
|
-
|
|
2353
|
-
<li>
|
|
2354
|
-
<a href="Plugins.html">Plugins</a> - Plugin syntax and CLI install flags
|
|
2355
|
-
</li>
|
|
2356
|
-
|
|
2357
|
-
<li>
|
|
2358
|
-
<a href="Usage.html">Usage</a> - Basic usage examples
|
|
2359
|
-
</li>
|
|
2360
|
-
|
|
2361
|
-
<li>
|
|
2362
|
-
<a href="Modes.html">Modes</a> - Processor mode details
|
|
2363
|
-
</li>
|
|
2364
|
-
|
|
2365
|
-
</ul>
|
|
2366
|
-
|
|
2367
|
-
<h1 id="index-section">
|
|
2368
|
-
Index
|
|
2369
|
-
</h1>
|
|
2370
|
-
|
|
2371
|
-
<div class="index">
|
|
2372
|
-
|
|
2373
|
-
<dl>
|
|
2374
|
-
|
|
2375
|
-
<dt>
|
|
2376
|
-
A
|
|
2377
|
-
</dt>
|
|
2378
|
-
|
|
2379
|
-
<dd>
|
|
2380
|
-
|
|
2381
|
-
<ul>
|
|
2382
|
-
|
|
2383
|
-
<li>
|
|
2384
|
-
|
|
2385
|
-
available <a class="index-return" href="#idxref-0"><sup>[go]</sup></a>
|
|
2386
|
-
</li>
|
|
2387
|
-
|
|
2388
|
-
</ul>
|
|
2389
|
-
|
|
2390
|
-
</dd>
|
|
2391
|
-
|
|
2392
|
-
</dl>
|
|
2393
|
-
|
|
2394
|
-
</div>
|
|
2395
|
-
|
|
2396
|
-
<script>
|
|
2397
|
-
// Hamburger menu functionality
|
|
2398
|
-
(function() {
|
|
2399
|
-
function initHamburgerMenu() {
|
|
2400
|
-
var hamburger = document.getElementById('hamburger-menu');
|
|
2401
|
-
var sidebar = document.querySelector('.main-toc, .sidebar');
|
|
2402
|
-
var overlay = document.getElementById('mobile-menu-overlay');
|
|
2403
|
-
|
|
2404
|
-
if (!hamburger || !sidebar) return;
|
|
2405
|
-
|
|
2406
|
-
function toggleMenu() {
|
|
2407
|
-
var isOpen = sidebar.classList.contains('mobile-open');
|
|
2408
|
-
if (isOpen) {
|
|
2409
|
-
sidebar.classList.remove('mobile-open');
|
|
2410
|
-
hamburger.classList.remove('active');
|
|
2411
|
-
if (overlay) overlay.classList.remove('active');
|
|
2412
|
-
} else {
|
|
2413
|
-
sidebar.classList.add('mobile-open');
|
|
2414
|
-
hamburger.classList.add('active');
|
|
2415
|
-
if (overlay) overlay.classList.add('active');
|
|
2416
|
-
}
|
|
2417
|
-
}
|
|
2418
|
-
|
|
2419
|
-
hamburger.addEventListener('click', function(e) {
|
|
2420
|
-
e.stopPropagation();
|
|
2421
|
-
toggleMenu();
|
|
2422
|
-
});
|
|
2423
|
-
|
|
2424
|
-
if (overlay) {
|
|
2425
|
-
overlay.addEventListener('click', function() {
|
|
2426
|
-
toggleMenu();
|
|
2427
|
-
});
|
|
2428
|
-
}
|
|
2429
|
-
|
|
2430
|
-
// Close menu when clicking on a sidebar link (mobile only)
|
|
2431
|
-
if (window.innerWidth <= 768) {
|
|
2432
|
-
var sidebarLinks = sidebar.querySelectorAll('a');
|
|
2433
|
-
sidebarLinks.forEach(function(link) {
|
|
2434
|
-
link.addEventListener('click', function() {
|
|
2435
|
-
setTimeout(function() {
|
|
2436
|
-
sidebar.classList.remove('mobile-open');
|
|
2437
|
-
hamburger.classList.remove('active');
|
|
2438
|
-
if (overlay) overlay.classList.remove('active');
|
|
2439
|
-
}, 100);
|
|
2440
|
-
});
|
|
2441
|
-
});
|
|
2442
|
-
}
|
|
2443
|
-
|
|
2444
|
-
// Close menu on window resize if going to desktop
|
|
2445
|
-
window.addEventListener('resize', function() {
|
|
2446
|
-
if (window.innerWidth > 768) {
|
|
2447
|
-
sidebar.classList.remove('mobile-open');
|
|
2448
|
-
hamburger.classList.remove('active');
|
|
2449
|
-
if (overlay) overlay.classList.remove('active');
|
|
2450
|
-
}
|
|
2451
|
-
});
|
|
2452
|
-
}
|
|
2453
|
-
|
|
2454
|
-
// Initialize when DOM is ready
|
|
2455
|
-
if (document.readyState === 'loading') {
|
|
2456
|
-
document.addEventListener('DOMContentLoaded', initHamburgerMenu);
|
|
2457
|
-
} else {
|
|
2458
|
-
initHamburgerMenu();
|
|
2459
|
-
}
|
|
2460
|
-
})();
|
|
2461
|
-
|
|
2462
|
-
</script>
|
|
2463
|
-
<script>
|
|
2464
|
-
(function() {
|
|
2465
|
-
// Clone the page TOC for floating TOC
|
|
2466
|
-
function initFloatingTOC() {
|
|
2467
|
-
var pageTOC = document.getElementById('page-toc-top');
|
|
2468
|
-
var floatingTOCContent = document.getElementById('floating-toc-content');
|
|
2469
|
-
var floatingTOC = document.getElementById('floating-toc');
|
|
2470
|
-
|
|
2471
|
-
if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
|
|
2472
|
-
|
|
2473
|
-
// Clone the TOC structure
|
|
2474
|
-
var tocClone = pageTOC.cloneNode(true);
|
|
2475
|
-
tocClone.id = 'floating-toc-clone';
|
|
2476
|
-
floatingTOCContent.appendChild(tocClone);
|
|
2477
|
-
|
|
2478
|
-
// Update all links to use smooth scrolling
|
|
2479
|
-
var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
|
|
2480
|
-
allTOCLinks.forEach(function(link) {
|
|
2481
|
-
link.addEventListener('click', function(e) {
|
|
2482
|
-
var href = this.getAttribute('href');
|
|
2483
|
-
if (href && href.startsWith('#')) {
|
|
2484
|
-
e.preventDefault();
|
|
2485
|
-
var targetId = href.substring(1);
|
|
2486
|
-
var targetElement = document.getElementById(targetId);
|
|
2487
|
-
if (targetElement) {
|
|
2488
|
-
var offset = 20; // Offset from top
|
|
2489
|
-
|
|
2490
|
-
// Function to calculate absolute position from document top
|
|
2491
|
-
function getAbsoluteTop(element) {
|
|
2492
|
-
var top = 0;
|
|
2493
|
-
while (element) {
|
|
2494
|
-
top += element.offsetTop;
|
|
2495
|
-
element = element.offsetParent;
|
|
2496
|
-
}
|
|
2497
|
-
return top;
|
|
2498
|
-
}
|
|
2499
|
-
|
|
2500
|
-
var absoluteTop = getAbsoluteTop(targetElement);
|
|
2501
|
-
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
2502
|
-
var offsetPosition = absoluteTop - offset;
|
|
2503
|
-
|
|
2504
|
-
// Only scroll if we're not already at the target position
|
|
2505
|
-
if (Math.abs(scrollTop - offsetPosition) > 10) {
|
|
2506
|
-
window.scrollTo({
|
|
2507
|
-
top: Math.max(0, offsetPosition),
|
|
2508
|
-
behavior: 'smooth'
|
|
2509
|
-
});
|
|
2510
|
-
}
|
|
2511
|
-
|
|
2512
|
-
// Update URL hash without triggering scroll
|
|
2513
|
-
if (history.pushState) {
|
|
2514
|
-
history.pushState(null, null, href);
|
|
2515
|
-
}
|
|
2516
|
-
}
|
|
2517
|
-
}
|
|
2518
|
-
});
|
|
2519
|
-
});
|
|
2520
|
-
|
|
2521
|
-
// Handle scroll to show/hide floating TOC
|
|
2522
|
-
var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
|
|
2523
|
-
var tocBottom = tocTop + pageTOC.offsetHeight;
|
|
2524
|
-
|
|
2525
|
-
function updateFloatingTOC() {
|
|
2526
|
-
var scrollY = window.pageYOffset || document.documentElement.scrollTop;
|
|
2527
|
-
|
|
2528
|
-
if (scrollY > tocBottom) {
|
|
2529
|
-
floatingTOC.classList.add('visible');
|
|
2530
|
-
} else {
|
|
2531
|
-
floatingTOC.classList.remove('visible');
|
|
2532
|
-
}
|
|
2533
|
-
}
|
|
2534
|
-
|
|
2535
|
-
// Throttle scroll events
|
|
2536
|
-
var ticking = false;
|
|
2537
|
-
window.addEventListener('scroll', function() {
|
|
2538
|
-
if (!ticking) {
|
|
2539
|
-
window.requestAnimationFrame(function() {
|
|
2540
|
-
updateFloatingTOC();
|
|
2541
|
-
ticking = false;
|
|
2542
|
-
});
|
|
2543
|
-
ticking = true;
|
|
2544
|
-
}
|
|
2545
|
-
});
|
|
2546
|
-
|
|
2547
|
-
// Initial check
|
|
2548
|
-
updateFloatingTOC();
|
|
2549
|
-
}
|
|
2550
|
-
|
|
2551
|
-
// Initialize when DOM is ready
|
|
2552
|
-
if (document.readyState === 'loading') {
|
|
2553
|
-
document.addEventListener('DOMContentLoaded', initFloatingTOC);
|
|
2554
|
-
} else {
|
|
2555
|
-
initFloatingTOC();
|
|
2556
|
-
}
|
|
2557
|
-
})();
|
|
2558
|
-
</script>
|
|
2559
|
-
<footer class="page-footer"><p>Copyright 2025 Brett Terpstra, All Rights Reserved | MIT License</p></footer></body>
|
|
2560
|
-
|
|
2561
|
-
</html>
|
|
2562
|
-
|