apex-ruby 1.0.17 → 1.0.20
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 +17 -3
- data/ext/apex_ext/apex_ext.c +260 -91
- data/ext/apex_ext/apex_src/CHANGELOG.md +440 -0
- data/ext/apex_ext/apex_src/CMakeLists.txt +15 -1
- data/ext/apex_ext/apex_src/Formula/apex.rb +7 -2
- data/ext/apex_ext/apex_src/Package.swift +15 -4
- data/ext/apex_ext/apex_src/README.md +94 -35
- data/ext/apex_ext/apex_src/VERSION +1 -1
- data/ext/apex_ext/apex_src/apex-debug.log +4 -0
- data/ext/apex_ext/apex_src/apex.code-workspace +38 -0
- data/ext/apex_ext/apex_src/apex.taskpaper +12 -0
- data/ext/apex_ext/apex_src/apex_deflist_debug.log +25 -0
- data/ext/apex_ext/apex_src/buildnotes.md +1435 -0
- data/ext/apex_ext/apex_src/cli/main.c +262 -33
- data/ext/apex_ext/apex_src/debug.log +7 -0
- data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +274 -0
- data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +749 -0
- data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +744 -0
- data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +382 -0
- data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +351 -0
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +745 -0
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +829 -0
- data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +1148 -0
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +161 -0
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +184 -0
- data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +211 -0
- data/ext/apex_ext/apex_src/documentation/app-settings-table.md +67 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +340 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +11 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +234 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +516 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +461 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +193 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +201 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +678 -0
- data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +1367 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +6 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +774 -300
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +1194 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +416 -216
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3544 -1094
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +371 -97
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +153 -23
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +358 -124
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +1656 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +1226 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +201 -56
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +279 -109
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +200 -53
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +2327 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +690 -271
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +201 -55
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +238 -68
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +421 -221
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +340 -78
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +251 -86
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +1362 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +277 -90
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +673 -346
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +1405 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +1902 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +1939 -1698
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +1781 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +315 -140
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +307 -113
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +1132 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +1754 -0
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +872 -376
- 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/html/apex-app-docs.html +8746 -0
- data/ext/apex_ext/apex_src/documentation/shared_styles.css +20 -15
- data/ext/apex_ext/apex_src/documentation/transform_for_app.md +55 -0
- data/ext/apex_ext/apex_src/escaping-repro.md +103 -0
- data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +8 -0
- 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 +547 -0
- 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 +33 -0
- data/ext/apex_ext/apex_src/include/apex/apex.h +92 -6
- data/ext/apex_ext/apex_src/include/apex/ast_rtf.h +23 -0
- data/ext/apex_ext/apex_src/include/apex/ast_terminal.h +6 -0
- data/ext/apex_ext/apex_src/include/apex/module.modulemap +5 -0
- data/ext/apex_ext/apex_src/include/apex/plugins.h +105 -0
- data/ext/apex_ext/apex_src/include/apexc.h +1 -0
- data/ext/apex_ext/apex_src/man/apex.1 +82 -78
- data/ext/apex_ext/apex_src/man/apex.1.md +81 -4
- data/ext/apex_ext/apex_src/objc/Apex.swift +73 -0
- data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +79 -0
- data/ext/apex_ext/apex_src/objc/NSString+Apex.h +83 -5
- data/ext/apex_ext/apex_src/objc/NSString+Apex.m +244 -1
- data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +76 -0
- data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +169 -0
- data/ext/apex_ext/apex_src/output.html +87 -0
- data/ext/apex_ext/apex_src/plans/quarto-mode.md +442 -0
- data/ext/apex_ext/apex_src/src/_README.md +85 -32
- data/ext/apex_ext/apex_src/src/apex.c +770 -200
- data/ext/apex_ext/apex_src/src/ast_rtf.c +848 -0
- data/ext/apex_ext/apex_src/src/ast_terminal.c +184 -7
- data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +10 -3
- data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +7 -11
- data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.c +467 -0
- data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.h +27 -0
- data/ext/apex_ext/apex_src/src/extensions/callouts.c +400 -4
- data/ext/apex_ext/apex_src/src/extensions/callouts.h +15 -5
- data/ext/apex_ext/apex_src/src/extensions/citations.c +26 -5
- data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.c +632 -0
- data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.h +22 -0
- data/ext/apex_ext/apex_src/src/extensions/concordance.c +632 -0
- data/ext/apex_ext/apex_src/src/extensions/definition_list.c +129 -15
- data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1050 -121
- data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +569 -16
- data/ext/apex_ext/apex_src/src/extensions/ial.c +502 -52
- data/ext/apex_ext/apex_src/src/extensions/ial.h +2 -1
- data/ext/apex_ext/apex_src/src/extensions/includes.c +532 -33
- data/ext/apex_ext/apex_src/src/extensions/includes.h +7 -1
- data/ext/apex_ext/apex_src/src/extensions/index.c +1427 -140
- data/ext/apex_ext/apex_src/src/extensions/index.h +28 -0
- data/ext/apex_ext/apex_src/src/extensions/metadata.c +200 -161
- data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.c +251 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.h +22 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_lists.c +624 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_lists.h +35 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_polish.c +264 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_polish.h +23 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.c +307 -0
- data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.h +21 -0
- data/ext/apex_ext/apex_src/src/extensions/raw_content.c +351 -0
- data/ext/apex_ext/apex_src/src/extensions/raw_content.h +20 -0
- data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +117 -3
- data/ext/apex_ext/apex_src/src/extensions/special_markers.c +53 -0
- data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +23 -1
- data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +83 -92
- data/ext/apex_ext/apex_src/src/extensions/toc.c +446 -25
- data/ext/apex_ext/apex_src/src/extensions/toc.h +26 -1
- data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +28 -0
- data/ext/apex_ext/apex_src/src/html_renderer.c +387 -17
- data/ext/apex_ext/apex_src/src/plugin_catalog.c +517 -0
- data/ext/apex_ext/apex_src/src/plugins_remote.c +88 -14
- data/ext/apex_ext/apex_src/src/plugins_remote.h +34 -0
- data/ext/apex_ext/apex_src/src/pretty_html.c +6 -1
- data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +21 -0
- data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +10 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +19 -0
- data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +11 -0
- data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +2 -0
- data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +46 -0
- data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +47 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +3 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +8 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +19 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +7 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +81 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +5 -0
- data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +47 -0
- data/ext/apex_ext/apex_src/tests/fixtures/speed.md +192 -0
- data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +37 -0
- data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +16 -0
- data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +301 -0
- data/ext/apex_ext/apex_src/tests/test_concordance.tsv +4 -0
- data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +82 -0
- data/ext/apex_ext/apex_src/tests/test_extensions.c +821 -1
- data/ext/apex_ext/apex_src/tests/test_ial.c +7 -0
- data/ext/apex_ext/apex_src/tests/test_marked_integration.c +25 -0
- data/ext/apex_ext/apex_src/tests/test_metadata.c +129 -0
- data/ext/apex_ext/apex_src/tests/test_output.c +568 -2
- data/ext/apex_ext/apex_src/tests/test_runner.c +11 -0
- data/ext/apex_ext/apex_src/tests/test_tables.c +420 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +1 -1
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +77 -1
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +135 -5
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +56 -1
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +38 -0
- data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +1 -1
- 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/extensions.txt +69 -0
- data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +74 -0
- data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +22 -0
- 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 +44 -0
- data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +128 -0
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +5118 -0
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
- 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 +8 -0
- data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +99 -0
- data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +452 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +52 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +55 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +2455 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +171 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +55 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +220 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +43 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +7 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +76 -0
- data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +10 -0
- data/ext/apex_ext/extconf.rb +35 -0
- data/lib/apex/version.rb +2 -2
- metadata +117 -2
- data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html
CHANGED
|
@@ -5,8 +5,97 @@
|
|
|
5
5
|
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
-
<meta name="generator" content="Apex
|
|
8
|
+
<meta name="generator" content="Apex 1.1.12">
|
|
9
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>
|
|
10
99
|
<style>
|
|
11
100
|
body {
|
|
12
101
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
@@ -35,10 +124,52 @@
|
|
|
35
124
|
ins { background: #d4fcbc; text-decoration: none; }
|
|
36
125
|
del { background: #fbb6c2; text-decoration: line-through; }
|
|
37
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; }
|
|
38
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
|
+
}
|
|
39
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
|
+
|
|
40
165
|
<style>
|
|
41
|
-
|
|
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) */
|
|
42
173
|
body {
|
|
43
174
|
-webkit-font-smoothing: antialiased;
|
|
44
175
|
-moz-osx-font-smoothing: grayscale;
|
|
@@ -48,6 +179,11 @@ body {
|
|
|
48
179
|
line-height: 1.65;
|
|
49
180
|
color: #1e293b;
|
|
50
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;
|
|
51
187
|
}
|
|
52
188
|
|
|
53
189
|
/* Sidebar / Main TOC - wider on larger screens */
|
|
@@ -56,9 +192,10 @@ body {
|
|
|
56
192
|
position: fixed;
|
|
57
193
|
left: 0;
|
|
58
194
|
top: 0;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
195
|
+
box-sizing: border-box;
|
|
196
|
+
width: var(--sidebar-width);
|
|
197
|
+
min-width: var(--sidebar-width);
|
|
198
|
+
max-width: var(--sidebar-width);
|
|
62
199
|
height: 100vh;
|
|
63
200
|
overflow-y: auto;
|
|
64
201
|
background: #1e293b;
|
|
@@ -67,7 +204,6 @@ body {
|
|
|
67
204
|
padding: 24px 20px 130px;
|
|
68
205
|
font-size: 14px;
|
|
69
206
|
z-index: 100;
|
|
70
|
-
margin-right: 1rem;
|
|
71
207
|
box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
|
|
72
208
|
transition: transform 0.3s ease;
|
|
73
209
|
}
|
|
@@ -116,11 +252,6 @@ body {
|
|
|
116
252
|
font-weight: 500;
|
|
117
253
|
}
|
|
118
254
|
|
|
119
|
-
/* Body margin for sidebar */
|
|
120
|
-
body {
|
|
121
|
-
margin-left: 270px;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
255
|
/* Hamburger menu button */
|
|
125
256
|
.hamburger-menu {
|
|
126
257
|
display: none;
|
|
@@ -136,6 +267,7 @@ body {
|
|
|
136
267
|
color: rgba(255, 255, 255, 0.9);
|
|
137
268
|
font-size: 20px;
|
|
138
269
|
line-height: 1;
|
|
270
|
+
box-sizing: border-box;
|
|
139
271
|
width: 44px;
|
|
140
272
|
height: 44px;
|
|
141
273
|
align-items: center;
|
|
@@ -153,9 +285,7 @@ body {
|
|
|
153
285
|
|
|
154
286
|
/* Move hamburger to the right of the sidebar when menu is open */
|
|
155
287
|
.hamburger-menu.active {
|
|
156
|
-
left: calc(
|
|
157
|
-
250px + 12px
|
|
158
|
-
); /* Position just to the right of sidebar (max-width 250px + 12px padding) */
|
|
288
|
+
left: calc(var(--sidebar-width) + 12px);
|
|
159
289
|
}
|
|
160
290
|
|
|
161
291
|
.hamburger-menu.active {
|
|
@@ -251,7 +381,7 @@ body {
|
|
|
251
381
|
.floating-toc {
|
|
252
382
|
position: fixed;
|
|
253
383
|
top: 0;
|
|
254
|
-
left:
|
|
384
|
+
left: var(--sidebar-offset);
|
|
255
385
|
right: 0;
|
|
256
386
|
z-index: 50;
|
|
257
387
|
opacity: 0;
|
|
@@ -677,7 +807,7 @@ ol ul {
|
|
|
677
807
|
}
|
|
678
808
|
|
|
679
809
|
body {
|
|
680
|
-
margin
|
|
810
|
+
margin: 2rem 1rem;
|
|
681
811
|
}
|
|
682
812
|
|
|
683
813
|
.floating-toc {
|
|
@@ -687,7 +817,7 @@ ol ul {
|
|
|
687
817
|
|
|
688
818
|
</style></head>
|
|
689
819
|
|
|
690
|
-
<body>
|
|
820
|
+
<body class="code-highlighted">
|
|
691
821
|
<div class="floating-toc" id="floating-toc">
|
|
692
822
|
<div class="floating-toc-container">
|
|
693
823
|
<div class="floating-toc-header">
|
|
@@ -702,111 +832,159 @@ ol ul {
|
|
|
702
832
|
<button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
|
|
703
833
|
<div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
|
|
704
834
|
|
|
705
|
-
<nav class="main-toc"><ul><li><a href="Home.html">Home</a></li><li><a href="Getting-Started.html">Getting Started</a></li><li><a href="Installation.html">Installation</a></li><li><a href="Usage.html">Usage</a></li><li><a href="Syntax.html">Syntax</a></li><li><a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a></li><li><a href="Modes.html">Modes</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Multi-File-Documents.html">Multi-file Documents</a></li><li><a href="Citations.html">Citations</a></li><li><a href="Metadata-Transforms.html">Metadata Transforms</a></li><li><a href="Pandoc-Integration.html">Integrating with Pandoc</a></li><li><a href="Header-IDs.html">Header IDs</a></li><li><a href="C-API.html">C API</a></li><li><a href="Xcode-Integration.html">Xcode Integration</a></li><li><a href="Examples.html">Examples</a></li><li><a href="Plugins.html">Plugins</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
|
|
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>
|
|
706
836
|
|
|
707
837
|
<h1 id="c-api">
|
|
708
|
-
C
|
|
838
|
+
C API
|
|
709
839
|
</h1>
|
|
710
|
-
<nav class="page-toc" id="page-toc-top"><ul><li><a href="#c-api">C
|
|
840
|
+
<nav class="page-toc" id="page-toc-top"><ul><li><a href="#c-api">C API</a><ul><li><a href="#swift-package-note">Swift Package Note</a><ul><li><a href="#direct-c-api-from-swift-spm">Direct C API from Swift (SPM)</a></li></ul></li><li><a href="#overview">Overview</a></li><li><a href="#core-types">Core Types</a><ul><li><a href="#apexmodet">apex_mode_t</a></li><li><a href="#apexoptions">apex_options</a></li></ul></li><li><a href="#core-functions">Core Functions</a><ul><li><a href="#apexoptionsdefault">apex_options_default</a></li><li><a href="#apexoptionsformode">apex_options_for_mode</a></li><li><a href="#apexmarkdowntohtml">apex_markdown_to_html</a></li><li><a href="#structured-toc-entries">Structured TOC entries</a></li><li><a href="#apexfreestring">apex_free_string</a></li><li><a href="#apexwraphtmldocument">apex_wrap_html_document</a></li><li><a href="#apexprettyprinthtml">apex_pretty_print_html</a></li></ul></li><li><a href="#version-functions">Version Functions</a><ul><li><a href="#apexversionstring">apex_version_string</a></li><li><a href="#apexversionmajor-apexversionminor-apexversionpatch">apex_version_major / apex_version_minor / apex_version_patch</a></li></ul></li><li><a href="#list-options">List Options</a><ul><li><a href="#mixed-list-markers">Mixed List Markers</a></li><li><a href="#alpha-lists">Alpha Lists</a></li></ul></li><li><a href="#feature-flags">Feature Flags</a></li><li><a href="#metadata-options">Metadata Options</a></li><li><a href="#file-inclusion">File Inclusion</a></li><li><a href="#output-options">Output Options</a></li><li><a href="#line-break-options">Line Break Options</a></li><li><a href="#header-id-options">Header ID Options</a></li><li><a href="#toc-options">TOC Options</a></li><li><a href="#table-options">Table Options</a></li><li><a href="#complete-example">Complete Example</a></li><li><a href="#plugin-catalog-api">Plugin Catalog API</a><ul><li><a href="#types">Types</a></li><li><a href="#fetch-available-plugins">Fetch available plugins</a></li><li><a href="#list-installed-plugins">List installed plugins</a></li><li><a href="#install-and-uninstall">Install and uninstall</a></li><li><a href="#enable-plugins-during-conversion">Enable plugins during conversion</a></li></ul></li><li><a href="#compiling-and-linking">Compiling and Linking</a><ul><li><a href="#with-cmake">With CMake</a></li><li><a href="#manual-compilation">Manual Compilation</a></li><li><a href="#static-linking">Static Linking</a></li></ul></li><li><a href="#thread-safety">Thread Safety</a></li><li><a href="#memory-management">Memory Management</a></li><li><a href="#error-handling">Error Handling</a></li><li><a href="#performance-tips">Performance Tips</a></li><li><a href="#related">Related</a></li></ul></li><li><a href="#index-section">Index</a></li></ul></nav>
|
|
711
841
|
|
|
712
842
|
<p>
|
|
713
843
|
Apex provides a simple C API for programmatic Markdown to HTML conversion.
|
|
714
844
|
</p>
|
|
715
845
|
|
|
716
|
-
<h2 id="
|
|
717
|
-
|
|
846
|
+
<h2 id="swift-package-note">
|
|
847
|
+
Swift Package Note
|
|
718
848
|
</h2>
|
|
719
849
|
|
|
720
850
|
<p>
|
|
721
|
-
|
|
851
|
+
If you use Apex via Swift Package Manager in an Xcode Swift target, add the
|
|
852
|
+
<code>ApexC</code> product to your target dependencies, then use:
|
|
722
853
|
</p>
|
|
723
854
|
|
|
724
|
-
<
|
|
725
|
-
|
|
726
|
-
</
|
|
855
|
+
<div class="highlight">
|
|
856
|
+
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">ApexC</span>
|
|
857
|
+
</pre>
|
|
858
|
+
</div>
|
|
727
859
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
860
|
+
<p>
|
|
861
|
+
for direct C API calls like <code>apex_options_default()</code> and <code>apex_markdown_to_html(...)</code>.
|
|
862
|
+
</p>
|
|
731
863
|
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
864
|
+
<p>
|
|
865
|
+
<code>import Apex</code> exposes the high-level Swift wrapper API (<code>Apex</code>, <code>ApexOptions</code>, <code>ApexMode</code>), which is recommended for most Swift use cases.
|
|
866
|
+
</p>
|
|
735
867
|
|
|
736
|
-
<
|
|
737
|
-
|
|
738
|
-
<span class="n">APEX_MODE_GFM</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="cm">/* GitHub Flavored Markdown */</span>
|
|
739
|
-
<span class="n">APEX_MODE_MULTIMARKDOWN</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="cm">/* MultiMarkdown compatibility */</span>
|
|
740
|
-
<span class="n">APEX_MODE_KRAMDOWN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="cm">/* Kramdown compatibility */</span>
|
|
741
|
-
<span class="n">APEX_MODE_UNIFIED</span> <span class="o">=</span> <span class="mi">4</span> <span class="cm">/* All features enabled */</span>
|
|
742
|
-
<span class="p">}</span> <span class="n">apex_mode_t</span><span class="p">;</span>
|
|
743
|
-
</code></pre>
|
|
744
|
-
|
|
745
|
-
<h3 id="apexoptions">
|
|
746
|
-
apex_options
|
|
868
|
+
<h3 id="direct-c-api-from-swift-spm">
|
|
869
|
+
Direct C API from Swift (SPM)
|
|
747
870
|
</h3>
|
|
748
871
|
|
|
749
|
-
<
|
|
750
|
-
|
|
751
|
-
</p>
|
|
872
|
+
<div class="highlight">
|
|
873
|
+
<pre><span></span><span class="kd">import</span><span class="w"> </span><span class="nc">ApexC</span>
|
|
752
874
|
|
|
753
|
-
<
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
875
|
+
<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 from C API</span><span class="se">\n</span><span class="s">"</span>
|
|
876
|
+
|
|
877
|
+
<span class="kd">var</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>
|
|
878
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">mode</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">APEX_MODE_UNIFIED</span>
|
|
879
|
+
|
|
880
|
+
<span class="kd">let</span><span class="w"> </span><span class="nv">html</span><span class="p">:</span><span class="w"> </span><span class="nb">String</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">withCString</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">cstr</span><span class="w"> </span><span class="k">in</span>
|
|
881
|
+
<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">out</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">cstr</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">cstr</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>
|
|
882
|
+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">""</span>
|
|
883
|
+
<span class="w"> </span><span class="p">}</span>
|
|
884
|
+
<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">out</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
885
|
+
<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">out</span><span class="p">)</span>
|
|
886
|
+
<span class="p">}</span>
|
|
887
|
+
</pre>
|
|
888
|
+
</div>
|
|
889
|
+
|
|
890
|
+
<h2 id="overview">
|
|
891
|
+
Overview
|
|
892
|
+
</h2>
|
|
893
|
+
|
|
894
|
+
<p>
|
|
895
|
+
The Apex C API is thread-safe and designed for integration into C and C++ applications. All functions are declared in <code>apex/apex.h</code>.
|
|
896
|
+
</p>
|
|
897
|
+
|
|
898
|
+
<h2 id="core-types">
|
|
899
|
+
Core Types
|
|
900
|
+
</h2>
|
|
901
|
+
|
|
902
|
+
<h3 id="apexmodet">
|
|
903
|
+
apex_mode_t
|
|
904
|
+
</h3>
|
|
905
|
+
|
|
906
|
+
<p>
|
|
907
|
+
Processor compatibility modes:
|
|
908
|
+
</p>
|
|
909
|
+
|
|
910
|
+
<div class="highlight">
|
|
911
|
+
<pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span>
|
|
912
|
+
<span class="w"> </span><span class="n">APEX_MODE_COMMONMARK</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Pure CommonMark spec */</span>
|
|
913
|
+
<span class="w"> </span><span class="n">APEX_MODE_GFM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="cm">/* GitHub Flavored Markdown */</span>
|
|
914
|
+
<span class="w"> </span><span class="n">APEX_MODE_MULTIMARKDOWN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="cm">/* MultiMarkdown compatibility */</span>
|
|
915
|
+
<span class="w"> </span><span class="n">APEX_MODE_KRAMDOWN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Kramdown compatibility */</span>
|
|
916
|
+
<span class="w"> </span><span class="n">APEX_MODE_UNIFIED</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="cm">/* All features enabled */</span>
|
|
917
|
+
<span class="p">}</span><span class="w"> </span><span class="n">apex_mode_t</span><span class="p">;</span>
|
|
918
|
+
</pre>
|
|
919
|
+
</div>
|
|
920
|
+
|
|
921
|
+
<h3 id="apexoptions">
|
|
922
|
+
apex_options
|
|
923
|
+
</h3>
|
|
924
|
+
|
|
925
|
+
<p>
|
|
926
|
+
Configuration structure for processing:
|
|
927
|
+
</p>
|
|
928
|
+
|
|
929
|
+
<div class="highlight">
|
|
930
|
+
<pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="p">{</span>
|
|
931
|
+
<span class="w"> </span><span class="n">apex_mode_t</span><span class="w"> </span><span class="n">mode</span><span class="p">;</span>
|
|
932
|
+
|
|
933
|
+
<span class="w"> </span><span class="cm">/* Feature flags */</span>
|
|
934
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_tables</span><span class="p">;</span>
|
|
935
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_footnotes</span><span class="p">;</span>
|
|
936
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_definition_lists</span><span class="p">;</span>
|
|
937
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_smart_typography</span><span class="p">;</span>
|
|
938
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_math</span><span class="p">;</span>
|
|
939
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_critic_markup</span><span class="p">;</span>
|
|
940
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_wiki_links</span><span class="p">;</span>
|
|
941
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_task_lists</span><span class="p">;</span>
|
|
942
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_attributes</span><span class="p">;</span>
|
|
943
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_callouts</span><span class="p">;</span>
|
|
944
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_marked_extensions</span><span class="p">;</span>
|
|
945
|
+
|
|
946
|
+
<span class="w"> </span><span class="cm">/* Critic markup mode */</span>
|
|
947
|
+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">critic_mode</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 0=accept, 1=reject, 2=markup (default) */</span>
|
|
948
|
+
|
|
949
|
+
<span class="w"> </span><span class="cm">/* Metadata handling */</span>
|
|
950
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">strip_metadata</span><span class="p">;</span>
|
|
951
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_metadata_variables</span><span class="p">;</span>
|
|
952
|
+
|
|
953
|
+
<span class="w"> </span><span class="cm">/* File inclusion */</span>
|
|
954
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">enable_file_includes</span><span class="p">;</span>
|
|
955
|
+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_include_depth</span><span class="p">;</span>
|
|
956
|
+
<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">base_directory</span><span class="p">;</span>
|
|
957
|
+
|
|
958
|
+
<span class="w"> </span><span class="cm">/* Output options */</span>
|
|
959
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">unsafe</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Allow raw HTML */</span>
|
|
960
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">validate_utf8</span><span class="p">;</span>
|
|
961
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">github_pre_lang</span><span class="p">;</span>
|
|
962
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">standalone</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Generate complete HTML document */</span>
|
|
963
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">pretty</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Pretty-print HTML */</span>
|
|
964
|
+
<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">stylesheet_path</span><span class="p">;</span>
|
|
965
|
+
<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">document_title</span><span class="p">;</span>
|
|
966
|
+
|
|
967
|
+
<span class="w"> </span><span class="cm">/* Line break handling */</span>
|
|
968
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">hardbreaks</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Treat newlines as hard breaks */</span>
|
|
969
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">nobreaks</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Render soft breaks as spaces */</span>
|
|
970
|
+
|
|
971
|
+
<span class="w"> </span><span class="cm">/* Header ID generation */</span>
|
|
972
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">generate_header_ids</span><span class="p">;</span>
|
|
973
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">header_anchors</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Generate <a> tags instead of id attributes */</span>
|
|
974
|
+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id_format</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 0=GFM, 1=MMD, 2=Kramdown */</span>
|
|
975
|
+
|
|
976
|
+
<span class="w"> </span><span class="cm">/* Table options */</span>
|
|
977
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">relaxed_tables</span><span class="p">;</span>
|
|
978
|
+
|
|
979
|
+
<span class="w"> </span><span class="cm">/* List options */</span>
|
|
980
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">allow_mixed_list_markers</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Allow mixed list markers at same level (inherit type from first item) */</span>
|
|
981
|
+
<span class="w"> </span><span class="kt">bool</span><span class="w"> </span><span class="n">allow_alpha_lists</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Support alpha list markers (a., b., c. and A., B., C.) */</span>
|
|
982
|
+
<span class="p">}</span><span class="w"> </span><span class="n">apex_options</span><span class="p">;</span>
|
|
983
|
+
</pre>
|
|
984
|
+
</div>
|
|
807
985
|
|
|
808
986
|
<h2 id="core-functions">
|
|
809
|
-
Core
|
|
987
|
+
Core Functions
|
|
810
988
|
</h2>
|
|
811
989
|
|
|
812
990
|
<h3 id="apexoptionsdefault">
|
|
@@ -817,21 +995,25 @@ ol ul {
|
|
|
817
995
|
Get default options with all features enabled (unified mode).
|
|
818
996
|
</p>
|
|
819
997
|
|
|
820
|
-
<
|
|
821
|
-
|
|
998
|
+
<div class="highlight">
|
|
999
|
+
<pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="nf">apex_options_default</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
1000
|
+
</pre>
|
|
1001
|
+
</div>
|
|
822
1002
|
|
|
823
1003
|
<p>
|
|
824
|
-
<strong>
|
|
1004
|
+
<strong>Returns:</strong> Default options structure
|
|
825
1005
|
</p>
|
|
826
1006
|
|
|
827
1007
|
<p>
|
|
828
|
-
<strong>
|
|
1008
|
+
<strong>Example:</strong>
|
|
829
1009
|
</p>
|
|
830
1010
|
|
|
831
|
-
<
|
|
832
|
-
<span class="n">
|
|
833
|
-
<span class="n">opts</span><span class="p">.</span><span class="n">
|
|
834
|
-
</
|
|
1011
|
+
<div class="highlight">
|
|
1012
|
+
<pre><span></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>
|
|
1013
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">enable_math</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1014
|
+
<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>
|
|
1015
|
+
</pre>
|
|
1016
|
+
</div>
|
|
835
1017
|
|
|
836
1018
|
<h3 id="apexoptionsformode">
|
|
837
1019
|
apex_options_for_mode
|
|
@@ -841,11 +1023,13 @@ ol ul {
|
|
|
841
1023
|
Get options configured for a specific processor mode.
|
|
842
1024
|
</p>
|
|
843
1025
|
|
|
844
|
-
<
|
|
845
|
-
|
|
1026
|
+
<div class="highlight">
|
|
1027
|
+
<pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="nf">apex_options_for_mode</span><span class="p">(</span><span class="n">apex_mode_t</span><span class="w"> </span><span class="n">mode</span><span class="p">);</span>
|
|
1028
|
+
</pre>
|
|
1029
|
+
</div>
|
|
846
1030
|
|
|
847
1031
|
<p>
|
|
848
|
-
<strong>
|
|
1032
|
+
<strong>Parameters:</strong>
|
|
849
1033
|
</p>
|
|
850
1034
|
|
|
851
1035
|
<ul>
|
|
@@ -857,16 +1041,18 @@ ol ul {
|
|
|
857
1041
|
</ul>
|
|
858
1042
|
|
|
859
1043
|
<p>
|
|
860
|
-
<strong>
|
|
1044
|
+
<strong>Returns:</strong> Options configured for the specified mode
|
|
861
1045
|
</p>
|
|
862
1046
|
|
|
863
1047
|
<p>
|
|
864
|
-
<strong>
|
|
1048
|
+
<strong>Example:</strong>
|
|
865
1049
|
</p>
|
|
866
1050
|
|
|
867
|
-
<
|
|
868
|
-
<span class="n">apex_options</span>
|
|
869
|
-
</
|
|
1051
|
+
<div class="highlight">
|
|
1052
|
+
<pre><span></span><span class="n">apex_options</span><span class="w"> </span><span class="n">gfm_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_GFM</span><span class="p">);</span>
|
|
1053
|
+
<span class="n">apex_options</span><span class="w"> </span><span class="n">mmd_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_options_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_MULTIMARKDOWN</span><span class="p">);</span>
|
|
1054
|
+
</pre>
|
|
1055
|
+
</div>
|
|
870
1056
|
|
|
871
1057
|
<h3 id="apexmarkdowntohtml">
|
|
872
1058
|
apex_markdown_to_html
|
|
@@ -876,12 +1062,14 @@ ol ul {
|
|
|
876
1062
|
Main conversion function - converts Markdown to HTML.
|
|
877
1063
|
</p>
|
|
878
1064
|
|
|
879
|
-
<
|
|
880
|
-
|
|
881
|
-
</
|
|
1065
|
+
<div class="highlight">
|
|
1066
|
+
<pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_markdown_to_html</span><span class="p">(</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">markdown</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">len</span><span class="p">,</span>
|
|
1067
|
+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="o">*</span><span class="n">options</span><span class="p">);</span>
|
|
1068
|
+
</pre>
|
|
1069
|
+
</div>
|
|
882
1070
|
|
|
883
1071
|
<p>
|
|
884
|
-
<strong>
|
|
1072
|
+
<strong>Parameters:</strong>
|
|
885
1073
|
</p>
|
|
886
1074
|
|
|
887
1075
|
<ul>
|
|
@@ -901,22 +1089,109 @@ ol ul {
|
|
|
901
1089
|
</ul>
|
|
902
1090
|
|
|
903
1091
|
<p>
|
|
904
|
-
<strong>
|
|
1092
|
+
<strong>Returns:</strong> Newly allocated HTML string (must be freed with <code>apex_free_string</code>), or NULL on error
|
|
1093
|
+
</p>
|
|
1094
|
+
|
|
1095
|
+
<p>
|
|
1096
|
+
<strong>Example:</strong>
|
|
1097
|
+
</p>
|
|
1098
|
+
|
|
1099
|
+
<div class="highlight">
|
|
1100
|
+
<pre><span></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">markdown</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"# Hello</span><span class="se">\n\n</span><span class="s">This is **bold**."</span><span class="p">;</span>
|
|
1101
|
+
<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>
|
|
1102
|
+
<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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1103
|
+
|
|
1104
|
+
<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>
|
|
1105
|
+
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">html</span><span class="p">);</span>
|
|
1106
|
+
<span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1107
|
+
<span class="p">}</span>
|
|
1108
|
+
</pre>
|
|
1109
|
+
</div>
|
|
1110
|
+
|
|
1111
|
+
<h3 id="structured-toc-entries">
|
|
1112
|
+
Structured TOC entries
|
|
1113
|
+
</h3>
|
|
1114
|
+
|
|
1115
|
+
<p>
|
|
1116
|
+
Extract headings as a flat array for outline UIs (collapsible table views, sidebars, etc.). Uses the same pipeline as <code>-t toc</code>: <code>id_format</code>, <code>toc_min</code> / <code>toc_max</code>, manual <code>{#id}</code> / IAL IDs, and <code>.no_toc</code> exclusions.
|
|
1117
|
+
</p>
|
|
1118
|
+
|
|
1119
|
+
<div class="highlight">
|
|
1120
|
+
<pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_toc_entry</span><span class="w"> </span><span class="p">{</span>
|
|
1121
|
+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">level</span><span class="p">;</span><span class="w"> </span><span class="cm">/* 1–6 */</span>
|
|
1122
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">text</span><span class="p">;</span><span class="w"> </span><span class="cm">/* display title */</span>
|
|
1123
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">;</span><span class="w"> </span><span class="cm">/* fragment id */</span>
|
|
1124
|
+
<span class="p">}</span><span class="w"> </span><span class="n">apex_toc_entry</span><span class="p">;</span>
|
|
1125
|
+
|
|
1126
|
+
<span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_markdown_to_toc_entries</span><span class="p">(</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">markdown</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">len</span><span class="p">,</span>
|
|
1127
|
+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">apex_options</span><span class="w"> </span><span class="o">*</span><span class="n">options</span><span class="p">,</span>
|
|
1128
|
+
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">out_count</span><span class="p">);</span>
|
|
1129
|
+
|
|
1130
|
+
<span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_generate_toc_entries</span><span class="p">(</span><span class="n">cmark_node</span><span class="w"> </span><span class="o">*</span><span class="n">document</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id_format</span><span class="p">,</span>
|
|
1131
|
+
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">min_level</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">max_level</span><span class="p">,</span>
|
|
1132
|
+
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">out_count</span><span class="p">);</span>
|
|
1133
|
+
|
|
1134
|
+
<span class="kt">void</span><span class="w"> </span><span class="nf">apex_toc_entries_free</span><span class="p">(</span><span class="n">apex_toc_entry</span><span class="w"> </span><span class="o">*</span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">);</span>
|
|
1135
|
+
</pre>
|
|
1136
|
+
</div>
|
|
1137
|
+
|
|
1138
|
+
<p>
|
|
1139
|
+
<strong>Parameters (<code>apex_markdown_to_toc_entries</code>):</strong>
|
|
1140
|
+
</p>
|
|
1141
|
+
|
|
1142
|
+
<ul>
|
|
1143
|
+
|
|
1144
|
+
<li>
|
|
1145
|
+
<code>markdown</code> / <code>len</code> - Input Markdown
|
|
1146
|
+
</li>
|
|
1147
|
+
|
|
1148
|
+
<li>
|
|
1149
|
+
<code>options</code> - Processing options (NULL for defaults). Honors <code>toc_min</code>, <code>toc_max</code>, and <code>id_format</code>
|
|
1150
|
+
</li>
|
|
1151
|
+
|
|
1152
|
+
<li>
|
|
1153
|
+
<code>out_count</code> - Required; receives the number of entries (0 if none)
|
|
1154
|
+
</li>
|
|
1155
|
+
|
|
1156
|
+
</ul>
|
|
1157
|
+
|
|
1158
|
+
<p>
|
|
1159
|
+
<strong>Returns:</strong> Heap array of <code>*out_count</code> entries, or NULL when there are no matching headings / on error. Free with <code>apex_toc_entries_free</code>.
|
|
1160
|
+
</p>
|
|
1161
|
+
|
|
1162
|
+
<p>
|
|
1163
|
+
<strong>Defaults:</strong> <code>toc_min = 1</code>, <code>toc_max = 3</code> (<code>#</code> through <code>###</code>), same as <code>-t toc</code>.
|
|
905
1164
|
</p>
|
|
906
1165
|
|
|
907
1166
|
<p>
|
|
908
|
-
<strong>
|
|
1167
|
+
<strong>Example:</strong>
|
|
909
1168
|
</p>
|
|
910
1169
|
|
|
911
|
-
<
|
|
912
|
-
<span class="n">apex_options</span>
|
|
913
|
-
<span class="
|
|
1170
|
+
<div class="highlight">
|
|
1171
|
+
<pre><span></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>
|
|
1172
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">toc_min</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
|
1173
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">toc_max</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span>
|
|
1174
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">id_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="cm">/* GFM */</span>
|
|
914
1175
|
|
|
915
|
-
<span class="
|
|
916
|
-
|
|
917
|
-
|
|
1176
|
+
<span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
|
1177
|
+
<span class="n">apex_toc_entry</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="n">apex_markdown_to_toc_entries</span><span class="p">(</span>
|
|
1178
|
+
<span class="w"> </span><span class="n">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">count</span><span class="p">);</span>
|
|
1179
|
+
|
|
1180
|
+
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1181
|
+
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d %s #%s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">level</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">id</span><span class="p">);</span>
|
|
918
1182
|
<span class="p">}</span>
|
|
919
|
-
|
|
1183
|
+
|
|
1184
|
+
<span class="n">apex_toc_entries_free</span><span class="p">(</span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span>
|
|
1185
|
+
</pre>
|
|
1186
|
+
</div>
|
|
1187
|
+
|
|
1188
|
+
<p>
|
|
1189
|
+
Nesting for collapsible sections is derived from <code>level</code>: treat the shallowest included level as a root row; when the next entry’s level is deeper, it is a child; when shallower or equal, close open sections.
|
|
1190
|
+
</p>
|
|
1191
|
+
|
|
1192
|
+
<p>
|
|
1193
|
+
You can also emit a Markdown TOC string via <code>opts.output_format = APEX_OUTPUT_TOC</code> and <code>apex_markdown_to_html(...)</code> (CLI: <code>-t toc</code>).
|
|
1194
|
+
</p>
|
|
920
1195
|
|
|
921
1196
|
<h3 id="apexfreestring">
|
|
922
1197
|
apex_free_string
|
|
@@ -926,11 +1201,13 @@ ol ul {
|
|
|
926
1201
|
Free a string allocated by Apex.
|
|
927
1202
|
</p>
|
|
928
1203
|
|
|
929
|
-
<
|
|
930
|
-
|
|
1204
|
+
<div class="highlight">
|
|
1205
|
+
<pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">apex_free_string</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">str</span><span class="p">);</span>
|
|
1206
|
+
</pre>
|
|
1207
|
+
</div>
|
|
931
1208
|
|
|
932
1209
|
<p>
|
|
933
|
-
<strong>
|
|
1210
|
+
<strong>Parameters:</strong>
|
|
934
1211
|
</p>
|
|
935
1212
|
|
|
936
1213
|
<ul>
|
|
@@ -942,13 +1219,15 @@ ol ul {
|
|
|
942
1219
|
</ul>
|
|
943
1220
|
|
|
944
1221
|
<p>
|
|
945
|
-
<strong>
|
|
1222
|
+
<strong>Example:</strong>
|
|
946
1223
|
</p>
|
|
947
1224
|
|
|
948
|
-
<
|
|
949
|
-
|
|
1225
|
+
<div class="highlight">
|
|
1226
|
+
<pre><span></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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span>
|
|
1227
|
+
<span class="c1">// Use html...</span>
|
|
950
1228
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
951
|
-
</
|
|
1229
|
+
</pre>
|
|
1230
|
+
</div>
|
|
952
1231
|
|
|
953
1232
|
<h3 id="apexwraphtmldocument">
|
|
954
1233
|
apex_wrap_html_document
|
|
@@ -958,12 +1237,14 @@ ol ul {
|
|
|
958
1237
|
Wrap HTML content in a complete HTML5 document structure.
|
|
959
1238
|
</p>
|
|
960
1239
|
|
|
961
|
-
<
|
|
962
|
-
|
|
963
|
-
</
|
|
1240
|
+
<div class="highlight">
|
|
1241
|
+
<pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_wrap_html_document</span><span class="p">(</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">content</span><span class="p">,</span><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">title</span><span class="p">,</span>
|
|
1242
|
+
<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">stylesheet_path</span><span class="p">);</span>
|
|
1243
|
+
</pre>
|
|
1244
|
+
</div>
|
|
964
1245
|
|
|
965
1246
|
<p>
|
|
966
|
-
<strong>
|
|
1247
|
+
<strong>Parameters:</strong>
|
|
967
1248
|
</p>
|
|
968
1249
|
|
|
969
1250
|
<ul>
|
|
@@ -983,19 +1264,21 @@ ol ul {
|
|
|
983
1264
|
</ul>
|
|
984
1265
|
|
|
985
1266
|
<p>
|
|
986
|
-
<strong>
|
|
1267
|
+
<strong>Returns:</strong> Newly allocated HTML document string (must be freed with <code>apex_free_string</code>)
|
|
987
1268
|
</p>
|
|
988
1269
|
|
|
989
1270
|
<p>
|
|
990
|
-
<strong>
|
|
1271
|
+
<strong>Example:</strong>
|
|
991
1272
|
</p>
|
|
992
1273
|
|
|
993
|
-
<
|
|
994
|
-
<span class="kt">char</span>
|
|
1274
|
+
<div class="highlight">
|
|
1275
|
+
<pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">fragment</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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1276
|
+
<span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">document</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_wrap_html_document</span><span class="p">(</span><span class="n">fragment</span><span class="p">,</span><span class="w"> </span><span class="s">"My Document"</span><span class="p">,</span><span class="w"> </span><span class="s">"style.css"</span><span class="p">);</span>
|
|
995
1277
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">fragment</span><span class="p">);</span>
|
|
996
|
-
|
|
1278
|
+
<span class="c1">// Use document...</span>
|
|
997
1279
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">document</span><span class="p">);</span>
|
|
998
|
-
</
|
|
1280
|
+
</pre>
|
|
1281
|
+
</div>
|
|
999
1282
|
|
|
1000
1283
|
<h3 id="apexprettyprinthtml">
|
|
1001
1284
|
apex_pretty_print_html
|
|
@@ -1005,11 +1288,13 @@ ol ul {
|
|
|
1005
1288
|
Pretty-print HTML with proper indentation.
|
|
1006
1289
|
</p>
|
|
1007
1290
|
|
|
1008
|
-
<
|
|
1009
|
-
|
|
1291
|
+
<div class="highlight">
|
|
1292
|
+
<pre><span></span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">apex_pretty_print_html</span><span class="p">(</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">html</span><span class="p">);</span>
|
|
1293
|
+
</pre>
|
|
1294
|
+
</div>
|
|
1010
1295
|
|
|
1011
1296
|
<p>
|
|
1012
|
-
<strong>
|
|
1297
|
+
<strong>Parameters:</strong>
|
|
1013
1298
|
</p>
|
|
1014
1299
|
|
|
1015
1300
|
<ul>
|
|
@@ -1021,22 +1306,24 @@ ol ul {
|
|
|
1021
1306
|
</ul>
|
|
1022
1307
|
|
|
1023
1308
|
<p>
|
|
1024
|
-
<strong>
|
|
1309
|
+
<strong>Returns:</strong> Newly allocated formatted HTML string (must be freed with <code>apex_free_string</code>)
|
|
1025
1310
|
</p>
|
|
1026
1311
|
|
|
1027
1312
|
<p>
|
|
1028
|
-
<strong>
|
|
1313
|
+
<strong>Example:</strong>
|
|
1029
1314
|
</p>
|
|
1030
1315
|
|
|
1031
|
-
<
|
|
1032
|
-
<span class="kt">char</span>
|
|
1316
|
+
<div class="highlight">
|
|
1317
|
+
<pre><span></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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1318
|
+
<span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">pretty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_pretty_print_html</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1033
1319
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1034
|
-
|
|
1320
|
+
<span class="c1">// Use pretty...</span>
|
|
1035
1321
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">pretty</span><span class="p">);</span>
|
|
1036
|
-
</
|
|
1322
|
+
</pre>
|
|
1323
|
+
</div>
|
|
1037
1324
|
|
|
1038
1325
|
<h2 id="version-functions">
|
|
1039
|
-
Version
|
|
1326
|
+
Version Functions
|
|
1040
1327
|
</h2>
|
|
1041
1328
|
|
|
1042
1329
|
<h3 id="apexversionstring">
|
|
@@ -1047,96 +1334,108 @@ ol ul {
|
|
|
1047
1334
|
Get version string.
|
|
1048
1335
|
</p>
|
|
1049
1336
|
|
|
1050
|
-
<
|
|
1051
|
-
|
|
1337
|
+
<div class="highlight">
|
|
1338
|
+
<pre><span></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="nf">apex_version_string</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
1339
|
+
</pre>
|
|
1340
|
+
</div>
|
|
1052
1341
|
|
|
1053
1342
|
<p>
|
|
1054
|
-
<strong>
|
|
1343
|
+
<strong>Returns:</strong> Version string (e.g., “0.1.0”)
|
|
1055
1344
|
</p>
|
|
1056
1345
|
|
|
1057
1346
|
<h3 id="apexversionmajor-apexversionminor-apexversionpatch">
|
|
1058
|
-
apex_version_major / apex_version_minor
|
|
1347
|
+
apex_version_major / apex_version_minor / apex_version_patch
|
|
1059
1348
|
</h3>
|
|
1060
1349
|
|
|
1061
1350
|
<p>
|
|
1062
1351
|
Get individual version components.
|
|
1063
1352
|
</p>
|
|
1064
1353
|
|
|
1065
|
-
<
|
|
1066
|
-
<span class="kt">int</span>
|
|
1067
|
-
<span class="kt">int</span>
|
|
1068
|
-
</
|
|
1354
|
+
<div class="highlight">
|
|
1355
|
+
<pre><span></span><span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_major</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
1356
|
+
<span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_minor</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
1357
|
+
<span class="kt">int</span><span class="w"> </span><span class="nf">apex_version_patch</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
|
|
1358
|
+
</pre>
|
|
1359
|
+
</div>
|
|
1069
1360
|
|
|
1070
1361
|
<p>
|
|
1071
|
-
<strong>
|
|
1362
|
+
<strong>Returns:</strong> Version component as integer
|
|
1072
1363
|
</p>
|
|
1073
1364
|
|
|
1074
1365
|
<h2 id="list-options">
|
|
1075
|
-
List
|
|
1366
|
+
List Options
|
|
1076
1367
|
</h2>
|
|
1077
1368
|
|
|
1078
1369
|
<h3 id="mixed-list-markers">
|
|
1079
|
-
Mixed List
|
|
1370
|
+
Mixed List Markers
|
|
1080
1371
|
</h3>
|
|
1081
1372
|
|
|
1082
1373
|
<p>
|
|
1083
1374
|
When <code>allow_mixed_list_markers</code> is enabled, lists with different marker types at the same indentation level will inherit the type from the first item. This is enabled by default in <strong>MultiMarkdown</strong> and <strong>Unified</strong> modes.
|
|
1084
1375
|
</p>
|
|
1085
1376
|
|
|
1086
|
-
<
|
|
1087
|
-
|
|
1377
|
+
<div class="highlight">
|
|
1378
|
+
<pre><span></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_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
|
|
1379
|
+
<span class="c1">// opts.allow_mixed_list_markers is true by default</span>
|
|
1088
1380
|
|
|
1089
|
-
|
|
1090
|
-
<span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span>
|
|
1381
|
+
<span class="c1">// To enable in other modes:</span>
|
|
1382
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1091
1383
|
|
|
1092
|
-
|
|
1093
|
-
<span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span>
|
|
1094
|
-
</
|
|
1384
|
+
<span class="c1">// To disable in unified/multimarkdown modes:</span>
|
|
1385
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">allow_mixed_list_markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
|
|
1386
|
+
</pre>
|
|
1387
|
+
</div>
|
|
1095
1388
|
|
|
1096
1389
|
<p>
|
|
1097
|
-
<strong>
|
|
1390
|
+
<strong>Example markdown:</strong>
|
|
1098
1391
|
</p>
|
|
1099
1392
|
|
|
1100
|
-
<
|
|
1101
|
-
<span class="
|
|
1102
|
-
<span class="
|
|
1103
|
-
</
|
|
1393
|
+
<div class="highlight">
|
|
1394
|
+
<pre><span></span><span class="k">1.</span> First numbered item
|
|
1395
|
+
<span class="k">*</span><span class="w"> </span>Second item (becomes numbered)
|
|
1396
|
+
<span class="k">*</span><span class="w"> </span>Third item (becomes numbered)
|
|
1397
|
+
</pre>
|
|
1398
|
+
</div>
|
|
1104
1399
|
|
|
1105
1400
|
<h3 id="alpha-lists">
|
|
1106
|
-
Alpha
|
|
1401
|
+
Alpha Lists
|
|
1107
1402
|
</h3>
|
|
1108
1403
|
|
|
1109
1404
|
<p>
|
|
1110
1405
|
When <code>allow_alpha_lists</code> is enabled, alphabetic markers (<code>a.</code>, <code>b.</code>, <code>c.</code> for lower-alpha and <code>A.</code>, <code>B.</code>, <code>C.</code> for upper-alpha) are converted to HTML lists with appropriate <code>list-style-type</code> CSS. This is enabled by default in <strong>Unified</strong> mode only.
|
|
1111
1406
|
</p>
|
|
1112
1407
|
|
|
1113
|
-
<
|
|
1114
|
-
|
|
1408
|
+
<div class="highlight">
|
|
1409
|
+
<pre><span></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_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
|
|
1410
|
+
<span class="c1">// opts.allow_alpha_lists is true by default</span>
|
|
1115
1411
|
|
|
1116
|
-
|
|
1117
|
-
<span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span>
|
|
1412
|
+
<span class="c1">// To enable in other modes:</span>
|
|
1413
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1118
1414
|
|
|
1119
|
-
|
|
1120
|
-
<span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span>
|
|
1121
|
-
</
|
|
1415
|
+
<span class="c1">// To disable in unified mode:</span>
|
|
1416
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">allow_alpha_lists</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
|
|
1417
|
+
</pre>
|
|
1418
|
+
</div>
|
|
1122
1419
|
|
|
1123
1420
|
<p>
|
|
1124
|
-
<strong>
|
|
1421
|
+
<strong>Example markdown:</strong>
|
|
1125
1422
|
</p>
|
|
1126
1423
|
|
|
1127
|
-
<
|
|
1128
|
-
<span
|
|
1129
|
-
|
|
1130
|
-
<span class="
|
|
1131
|
-
<span class="
|
|
1132
|
-
|
|
1424
|
+
<div class="highlight">
|
|
1425
|
+
<pre><span></span><!-- apex-alpha-list-lower -->
|
|
1426
|
+
|
|
1427
|
+
<span class="k">1.</span> First item
|
|
1428
|
+
<span class="k">2.</span> Second item
|
|
1429
|
+
<span class="k">3.</span> Third item
|
|
1430
|
+
</pre>
|
|
1431
|
+
</div>
|
|
1133
1432
|
|
|
1134
1433
|
<p>
|
|
1135
1434
|
This produces HTML with <code>style="list-style-type: lower-alpha"</code> on the <code><ol></code> tag.
|
|
1136
1435
|
</p>
|
|
1137
1436
|
|
|
1138
1437
|
<h2 id="feature-flags">
|
|
1139
|
-
Feature
|
|
1438
|
+
Feature Flags
|
|
1140
1439
|
</h2>
|
|
1141
1440
|
|
|
1142
1441
|
<p>
|
|
@@ -1196,7 +1495,7 @@ ol ul {
|
|
|
1196
1495
|
</p>
|
|
1197
1496
|
|
|
1198
1497
|
<h2 id="metadata-options">
|
|
1199
|
-
Metadata
|
|
1498
|
+
Metadata Options
|
|
1200
1499
|
</h2>
|
|
1201
1500
|
|
|
1202
1501
|
<ul>
|
|
@@ -1212,13 +1511,13 @@ ol ul {
|
|
|
1212
1511
|
</ul>
|
|
1213
1512
|
|
|
1214
1513
|
<h2 id="file-inclusion">
|
|
1215
|
-
File
|
|
1514
|
+
File Inclusion
|
|
1216
1515
|
</h2>
|
|
1217
1516
|
|
|
1218
1517
|
<ul>
|
|
1219
1518
|
|
|
1220
1519
|
<li>
|
|
1221
|
-
<code>enable_file_includes</code> - Enable file inclusion syntax (
|
|
1520
|
+
<code>enable_file_includes</code> - Enable file inclusion syntax (<code><<[file.md]</code>, <code>{{file.md}}</code>, <code>/file.md</code>)
|
|
1222
1521
|
</li>
|
|
1223
1522
|
|
|
1224
1523
|
<li>
|
|
@@ -1232,7 +1531,7 @@ ol ul {
|
|
|
1232
1531
|
</ul>
|
|
1233
1532
|
|
|
1234
1533
|
<h2 id="output-options">
|
|
1235
|
-
Output
|
|
1534
|
+
Output Options
|
|
1236
1535
|
</h2>
|
|
1237
1536
|
|
|
1238
1537
|
<ul>
|
|
@@ -1268,7 +1567,7 @@ ol ul {
|
|
|
1268
1567
|
</ul>
|
|
1269
1568
|
|
|
1270
1569
|
<h2 id="line-break-options">
|
|
1271
|
-
Line Break
|
|
1570
|
+
Line Break Options
|
|
1272
1571
|
</h2>
|
|
1273
1572
|
|
|
1274
1573
|
<ul>
|
|
@@ -1284,7 +1583,7 @@ ol ul {
|
|
|
1284
1583
|
</ul>
|
|
1285
1584
|
|
|
1286
1585
|
<h2 id="header-id-options">
|
|
1287
|
-
Header
|
|
1586
|
+
Header ID Options
|
|
1288
1587
|
</h2>
|
|
1289
1588
|
|
|
1290
1589
|
<ul>
|
|
@@ -1303,8 +1602,28 @@ ol ul {
|
|
|
1303
1602
|
|
|
1304
1603
|
</ul>
|
|
1305
1604
|
|
|
1605
|
+
<h2 id="toc-options">
|
|
1606
|
+
TOC Options
|
|
1607
|
+
</h2>
|
|
1608
|
+
|
|
1609
|
+
<ul>
|
|
1610
|
+
|
|
1611
|
+
<li>
|
|
1612
|
+
<code>toc_min</code> / <code>toc_max</code> - Inclusive heading depth for <code>-t toc</code> / <code>apex_markdown_to_toc_entries</code> and for bare HTML TOC markers (default: <code>1</code> / <code>3</code>)
|
|
1613
|
+
</li>
|
|
1614
|
+
|
|
1615
|
+
<li>
|
|
1616
|
+
<code>output_format</code> - Set to <code>APEX_OUTPUT_TOC</code> to return a Markdown TOC list from <code>apex_markdown_to_html</code>
|
|
1617
|
+
</li>
|
|
1618
|
+
|
|
1619
|
+
<li>
|
|
1620
|
+
<code>toc_entries_out</code> / <code>toc_entries_count_out</code> - Optional capture pointers used internally by <code>apex_markdown_to_toc_entries</code>; leave NULL for normal conversion
|
|
1621
|
+
</li>
|
|
1622
|
+
|
|
1623
|
+
</ul>
|
|
1624
|
+
|
|
1306
1625
|
<h2 id="table-options">
|
|
1307
|
-
Table
|
|
1626
|
+
Table Options
|
|
1308
1627
|
</h2>
|
|
1309
1628
|
|
|
1310
1629
|
<ul>
|
|
@@ -1313,95 +1632,215 @@ ol ul {
|
|
|
1313
1632
|
<code>relaxed_tables</code> - Support tables without separator rows (Kramdown-style, default: true in Unified/Kramdown modes)
|
|
1314
1633
|
</li>
|
|
1315
1634
|
|
|
1635
|
+
<li>
|
|
1636
|
+
<code>per_cell_alignment</code> - Enable per-cell alignment markers using colons at start/end of cells (default: true in Unified mode, false in other modes)
|
|
1637
|
+
</li>
|
|
1638
|
+
|
|
1316
1639
|
</ul>
|
|
1317
1640
|
|
|
1318
1641
|
<h2 id="complete-example">
|
|
1319
|
-
Complete
|
|
1642
|
+
Complete Example
|
|
1643
|
+
</h2>
|
|
1644
|
+
|
|
1645
|
+
<div class="highlight">
|
|
1646
|
+
<pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><apex/apex.h></span>
|
|
1647
|
+
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span>
|
|
1648
|
+
<span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span>
|
|
1649
|
+
|
|
1650
|
+
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
|
1651
|
+
<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">markdown</span><span class="w"> </span><span class="o">=</span>
|
|
1652
|
+
<span class="w"> </span><span class="s">"---</span><span class="se">\n</span><span class="s">"</span>
|
|
1653
|
+
<span class="w"> </span><span class="s">"title: Test Document</span><span class="se">\n</span><span class="s">"</span>
|
|
1654
|
+
<span class="w"> </span><span class="s">"author: John Doe</span><span class="se">\n</span><span class="s">"</span>
|
|
1655
|
+
<span class="w"> </span><span class="s">"---</span><span class="se">\n</span><span class="s">"</span>
|
|
1656
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1657
|
+
<span class="w"> </span><span class="s">"# [%title]</span><span class="se">\n</span><span class="s">"</span>
|
|
1658
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1659
|
+
<span class="w"> </span><span class="s">"By [%author]</span><span class="se">\n</span><span class="s">"</span>
|
|
1660
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1661
|
+
<span class="w"> </span><span class="s">"This has **bold** and a [[WikiLink]].</span><span class="se">\n</span><span class="s">"</span>
|
|
1662
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1663
|
+
<span class="w"> </span><span class="s">"Math: $E = mc^2$</span><span class="se">\n</span><span class="s">"</span>
|
|
1664
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1665
|
+
<span class="w"> </span><span class="s">"1. Mixed markers</span><span class="se">\n</span><span class="s">"</span>
|
|
1666
|
+
<span class="w"> </span><span class="s">"* Second item</span><span class="se">\n</span><span class="s">"</span>
|
|
1667
|
+
<span class="w"> </span><span class="s">"</span><span class="se">\n</span><span class="s">"</span>
|
|
1668
|
+
<span class="w"> </span><span class="s">"a. Alpha list</span><span class="se">\n</span><span class="s">"</span>
|
|
1669
|
+
<span class="w"> </span><span class="s">"b. Second alpha</span><span class="se">\n</span><span class="s">"</span><span class="p">;</span>
|
|
1670
|
+
|
|
1671
|
+
<span class="w"> </span><span class="c1">// Use unified mode with all features</span>
|
|
1672
|
+
<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_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
|
|
1673
|
+
<span class="w"> </span><span class="c1">// Mixed markers and alpha lists are enabled by default in unified mode</span>
|
|
1674
|
+
<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>
|
|
1675
|
+
<span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">standalone</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1676
|
+
<span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">document_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Test Document"</span><span class="p">;</span>
|
|
1677
|
+
|
|
1678
|
+
<span class="w"> </span><span class="c1">// Convert to HTML</span>
|
|
1679
|
+
<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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">markdown</span><span class="p">),</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1680
|
+
|
|
1681
|
+
<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>
|
|
1682
|
+
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">html</span><span class="p">);</span>
|
|
1683
|
+
<span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1684
|
+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
|
|
1685
|
+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
|
1686
|
+
<span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"Conversion failed</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
|
|
1687
|
+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
|
1688
|
+
<span class="w"> </span><span class="p">}</span>
|
|
1689
|
+
<span class="p">}</span>
|
|
1690
|
+
</pre>
|
|
1691
|
+
</div>
|
|
1692
|
+
|
|
1693
|
+
<h2 id="plugin-catalog-api">
|
|
1694
|
+
Plugin Catalog API
|
|
1320
1695
|
</h2>
|
|
1321
1696
|
|
|
1322
|
-
<
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
<
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1697
|
+
<p>
|
|
1698
|
+
Plugin listing and installation for app UIs is declared in <code>apex/plugins.h</code> (also included by <code>apexc.h</code>).
|
|
1699
|
+
</p>
|
|
1700
|
+
|
|
1701
|
+
<h3 id="types">
|
|
1702
|
+
Types
|
|
1703
|
+
</h3>
|
|
1704
|
+
|
|
1705
|
+
<div class="highlight">
|
|
1706
|
+
<pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_plugin_info</span><span class="w"> </span><span class="p">{</span>
|
|
1707
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">;</span>
|
|
1708
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">title</span><span class="p">;</span>
|
|
1709
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">description</span><span class="p">;</span>
|
|
1710
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">author</span><span class="p">;</span>
|
|
1711
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">homepage</span><span class="p">;</span>
|
|
1712
|
+
<span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="p">;</span>
|
|
1713
|
+
<span class="p">}</span><span class="w"> </span><span class="n">apex_plugin_info</span><span class="p">;</span>
|
|
1714
|
+
|
|
1715
|
+
<span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">apex_plugin_catalog</span><span class="w"> </span><span class="p">{</span>
|
|
1716
|
+
<span class="w"> </span><span class="n">apex_plugin_info</span><span class="w"> </span><span class="o">*</span><span class="n">items</span><span class="p">;</span>
|
|
1717
|
+
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">;</span>
|
|
1718
|
+
<span class="p">}</span><span class="w"> </span><span class="n">apex_plugin_catalog</span><span class="p">;</span>
|
|
1719
|
+
</pre>
|
|
1720
|
+
</div>
|
|
1721
|
+
|
|
1722
|
+
<h3 id="fetch-available-plugins">
|
|
1723
|
+
Fetch available plugins
|
|
1724
|
+
</h3>
|
|
1725
|
+
|
|
1726
|
+
<div class="highlight">
|
|
1727
|
+
<pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><apex/plugins.h></span>
|
|
1728
|
+
|
|
1729
|
+
<span class="n">apex_plugin_catalog</span><span class="w"> </span><span class="o">*</span><span class="n">catalog</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_plugin_catalog_fetch_default</span><span class="p">();</span>
|
|
1730
|
+
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">catalog</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1731
|
+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">catalog</span><span class="o">-></span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1732
|
+
<span class="w"> </span><span class="n">apex_plugin_info</span><span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">catalog</span><span class="o">-></span><span class="n">items</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
|
|
1733
|
+
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s - %s (%s)</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-></span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-></span><span class="n">title</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">p</span><span class="o">-></span><span class="n">title</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="o">-></span><span class="n">repo</span><span class="p">);</span>
|
|
1734
|
+
<span class="w"> </span><span class="p">}</span>
|
|
1735
|
+
<span class="w"> </span><span class="n">apex_plugin_catalog_free</span><span class="p">(</span><span class="n">catalog</span><span class="p">);</span>
|
|
1736
|
+
<span class="p">}</span>
|
|
1737
|
+
</pre>
|
|
1738
|
+
</div>
|
|
1739
|
+
|
|
1740
|
+
<p>
|
|
1741
|
+
The default catalog URL is <code>APEX_PLUGIN_DIRECTORY_URL</code> (ApexMarkdown/apex-plugins on GitHub).
|
|
1742
|
+
</p>
|
|
1743
|
+
|
|
1744
|
+
<h3 id="list-installed-plugins">
|
|
1745
|
+
List installed plugins
|
|
1746
|
+
</h3>
|
|
1747
|
+
|
|
1748
|
+
<p>
|
|
1749
|
+
Uses the same discovery order as runtime plugin loading (project <code>.apex/plugins</code>, then user-global <code>~/.config/apex/plugins</code>):
|
|
1750
|
+
</p>
|
|
1751
|
+
|
|
1752
|
+
<div class="highlight">
|
|
1753
|
+
<pre><span></span><span class="n">apex_plugin_discovery_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="p">{</span>
|
|
1754
|
+
<span class="w"> </span><span class="p">.</span><span class="n">base_directory</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"/path/to/document"</span><span class="p">,</span>
|
|
1755
|
+
<span class="w"> </span><span class="p">.</span><span class="n">include_project</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
|
|
1756
|
+
<span class="w"> </span><span class="p">.</span><span class="n">include_user_global</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
|
|
1757
|
+
<span class="p">};</span>
|
|
1758
|
+
<span class="n">apex_plugin_catalog</span><span class="w"> </span><span class="o">*</span><span class="n">installed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">apex_plugins_list_installed</span><span class="p">(</span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1759
|
+
</pre>
|
|
1760
|
+
</div>
|
|
1761
|
+
|
|
1762
|
+
<h3 id="install-and-uninstall">
|
|
1763
|
+
Install and uninstall
|
|
1764
|
+
</h3>
|
|
1765
|
+
|
|
1766
|
+
<p>
|
|
1767
|
+
Installs into the user-global plugins directory. Requires <code>git</code> and <code>curl</code> on PATH (same as the CLI).
|
|
1768
|
+
</p>
|
|
1769
|
+
|
|
1770
|
+
<div class="highlight">
|
|
1771
|
+
<pre><span></span><span class="n">apex_plugin_install_options</span><span class="w"> </span><span class="n">install_opts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
|
1772
|
+
<span class="w"> </span><span class="p">.</span><span class="n">allow_untrusted_repo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">,</span>
|
|
1773
|
+
<span class="w"> </span><span class="p">.</span><span class="n">run_post_install</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">,</span>
|
|
1774
|
+
<span class="p">};</span>
|
|
1775
|
+
<span class="kt">char</span><span class="w"> </span><span class="n">err</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
|
|
1776
|
+
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">apex_plugin_install</span><span class="p">(</span><span class="s">"kbd"</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">install_opts</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">err</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1777
|
+
<span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"Install failed: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">);</span>
|
|
1778
|
+
<span class="p">}</span>
|
|
1779
|
+
|
|
1780
|
+
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">apex_plugin_uninstall</span><span class="p">(</span><span class="s">"kbd"</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">err</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1781
|
+
<span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"Uninstall failed: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">err</span><span class="p">);</span>
|
|
1365
1782
|
<span class="p">}</span>
|
|
1366
|
-
</
|
|
1783
|
+
</pre>
|
|
1784
|
+
</div>
|
|
1785
|
+
|
|
1786
|
+
<p>
|
|
1787
|
+
Set <code>allow_untrusted_repo</code> to <code>true</code> when installing from a Git URL or <code>user/repo</code> shorthand instead of a directory id.
|
|
1788
|
+
</p>
|
|
1789
|
+
|
|
1790
|
+
<h3 id="enable-plugins-during-conversion">
|
|
1791
|
+
Enable plugins during conversion
|
|
1792
|
+
</h3>
|
|
1793
|
+
|
|
1794
|
+
<div class="highlight">
|
|
1795
|
+
<pre><span></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_for_mode</span><span class="p">(</span><span class="n">APEX_MODE_UNIFIED</span><span class="p">);</span>
|
|
1796
|
+
<span class="n">opts</span><span class="p">.</span><span class="n">enable_plugins</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
|
|
1797
|
+
<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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1798
|
+
</pre>
|
|
1799
|
+
</div>
|
|
1367
1800
|
|
|
1368
1801
|
<h2 id="compiling-and-linking">
|
|
1369
|
-
Compiling and
|
|
1802
|
+
Compiling and Linking
|
|
1370
1803
|
</h2>
|
|
1371
1804
|
|
|
1372
1805
|
<h3 id="with-cmake">
|
|
1373
|
-
With
|
|
1806
|
+
With CMake
|
|
1374
1807
|
</h3>
|
|
1375
1808
|
|
|
1376
|
-
<
|
|
1377
|
-
<span
|
|
1378
|
-
<span class="nb">
|
|
1379
|
-
</
|
|
1809
|
+
<div class="highlight">
|
|
1810
|
+
<pre><span></span><span class="c"># In your CMakeLists.txt</span>
|
|
1811
|
+
<span class="nb">find_package</span><span class="p">(</span><span class="s">apex</span><span class="w"> </span><span class="s">REQUIRED</span><span class="p">)</span>
|
|
1812
|
+
<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>
|
|
1813
|
+
</pre>
|
|
1814
|
+
</div>
|
|
1380
1815
|
|
|
1381
1816
|
<h3 id="manual-compilation">
|
|
1382
1817
|
Manual Compilation
|
|
1383
1818
|
</h3>
|
|
1384
1819
|
|
|
1385
|
-
<
|
|
1386
|
-
|
|
1820
|
+
<div class="highlight">
|
|
1821
|
+
<pre><span></span><span class="c1"># Compile</span>
|
|
1822
|
+
gcc<span class="w"> </span>-c<span class="w"> </span>-I/usr/local/include<span class="w"> </span>your_app.c
|
|
1387
1823
|
|
|
1388
|
-
<span class="
|
|
1389
|
-
gcc your_app.o
|
|
1824
|
+
<span class="c1"># Link</span>
|
|
1825
|
+
gcc<span class="w"> </span>your_app.o<span class="w"> </span>-L/usr/local/lib<span class="w"> </span>-lapex<span class="w"> </span>-o<span class="w"> </span>your_app
|
|
1390
1826
|
|
|
1391
|
-
<span class="
|
|
1392
|
-
<span class="nv">DYLD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib
|
|
1393
|
-
<span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib
|
|
1394
|
-
</
|
|
1827
|
+
<span class="c1"># Run (may need library path)</span>
|
|
1828
|
+
<span class="nv">DYLD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib<span class="w"> </span>./your_app<span class="w"> </span><span class="c1"># macOS</span>
|
|
1829
|
+
<span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span>/usr/local/lib<span class="w"> </span>./your_app<span class="w"> </span><span class="c1"># Linux</span>
|
|
1830
|
+
</pre>
|
|
1831
|
+
</div>
|
|
1395
1832
|
|
|
1396
1833
|
<h3 id="static-linking">
|
|
1397
|
-
Static
|
|
1834
|
+
Static Linking
|
|
1398
1835
|
</h3>
|
|
1399
1836
|
|
|
1400
|
-
<
|
|
1401
|
-
|
|
1837
|
+
<div class="highlight">
|
|
1838
|
+
<pre><span></span>gcc<span class="w"> </span>your_app.c<span class="w"> </span>-I/usr/local/include<span class="w"> </span>-L/usr/local/lib<span class="w"> </span>-lapex<span class="w"> </span>-static<span class="w"> </span>-o<span class="w"> </span>your_app
|
|
1839
|
+
</pre>
|
|
1840
|
+
</div>
|
|
1402
1841
|
|
|
1403
1842
|
<h2 id="thread-safety">
|
|
1404
|
-
Thread
|
|
1843
|
+
Thread Safety
|
|
1405
1844
|
</h2>
|
|
1406
1845
|
|
|
1407
1846
|
<p>
|
|
@@ -1425,21 +1864,23 @@ gcc your_app.o <span class="nt">-L</span>/usr/local/lib <span class="nt">-lapex<
|
|
|
1425
1864
|
</ol>
|
|
1426
1865
|
|
|
1427
1866
|
<p>
|
|
1428
|
-
<strong>
|
|
1867
|
+
<strong>Example:</strong>
|
|
1429
1868
|
</p>
|
|
1430
1869
|
|
|
1431
|
-
<
|
|
1432
|
-
<
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1870
|
+
<div class="highlight">
|
|
1871
|
+
<pre><span></span><span class="c1">// Thread-safe: each thread has its own options</span>
|
|
1872
|
+
<span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="nf">thread_func</span><span class="p">(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1873
|
+
<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>
|
|
1874
|
+
<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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1875
|
+
<span class="w"> </span><span class="c1">// Use html...</span>
|
|
1876
|
+
<span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1877
|
+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span>
|
|
1438
1878
|
<span class="p">}</span>
|
|
1439
|
-
</
|
|
1879
|
+
</pre>
|
|
1880
|
+
</div>
|
|
1440
1881
|
|
|
1441
1882
|
<h2 id="memory-management">
|
|
1442
|
-
Memory
|
|
1883
|
+
Memory Management
|
|
1443
1884
|
</h2>
|
|
1444
1885
|
|
|
1445
1886
|
<ul>
|
|
@@ -1463,7 +1904,7 @@ gcc your_app.o <span class="nt">-L</span>/usr/local/lib <span class="nt">-lapex<
|
|
|
1463
1904
|
</ul>
|
|
1464
1905
|
|
|
1465
1906
|
<h2 id="error-handling">
|
|
1466
|
-
Error
|
|
1907
|
+
Error Handling
|
|
1467
1908
|
</h2>
|
|
1468
1909
|
|
|
1469
1910
|
<ul>
|
|
@@ -1499,54 +1940,58 @@ gcc your_app.o <span class="nt">-L</span>/usr/local/lib <span class="nt">-lapex<
|
|
|
1499
1940
|
</ul>
|
|
1500
1941
|
|
|
1501
1942
|
<p>
|
|
1502
|
-
<strong>
|
|
1943
|
+
<strong>Example:</strong>
|
|
1503
1944
|
</p>
|
|
1504
1945
|
|
|
1505
|
-
<
|
|
1506
|
-
<span class="
|
|
1507
|
-
|
|
1508
|
-
|
|
1946
|
+
<div class="highlight">
|
|
1947
|
+
<pre><span></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">markdown</span><span class="p">,</span><span class="w"> </span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1948
|
+
<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>
|
|
1949
|
+
<span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"Conversion failed</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
|
|
1950
|
+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
|
|
1509
1951
|
<span class="p">}</span>
|
|
1510
|
-
|
|
1952
|
+
<span class="c1">// Use html...</span>
|
|
1511
1953
|
<span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1512
|
-
</
|
|
1954
|
+
</pre>
|
|
1955
|
+
</div>
|
|
1513
1956
|
|
|
1514
1957
|
<h2 id="performance-tips">
|
|
1515
|
-
Performance
|
|
1958
|
+
Performance Tips
|
|
1516
1959
|
</h2>
|
|
1517
1960
|
|
|
1518
1961
|
<ol>
|
|
1519
1962
|
|
|
1520
1963
|
<li>
|
|
1521
|
-
<strong>
|
|
1964
|
+
<strong>Reuse options</strong>: Create <code>apex_options</code> once and reuse for multiple conversions
|
|
1522
1965
|
</li>
|
|
1523
1966
|
|
|
1524
1967
|
<li>
|
|
1525
|
-
<strong>
|
|
1968
|
+
<strong>Provide accurate length</strong>: Avoid unnecessary <code>strlen()</code> calls
|
|
1526
1969
|
</li>
|
|
1527
1970
|
|
|
1528
1971
|
<li>
|
|
1529
|
-
<strong>
|
|
1972
|
+
<strong>Disable unused features</strong>: Turn off extensions you don’t need
|
|
1530
1973
|
</li>
|
|
1531
1974
|
|
|
1532
1975
|
<li>
|
|
1533
|
-
<strong>
|
|
1976
|
+
<strong>Batch processing</strong>: Process multiple documents in parallel (thread-safe)
|
|
1534
1977
|
</li>
|
|
1535
1978
|
|
|
1536
1979
|
</ol>
|
|
1537
1980
|
|
|
1538
1981
|
<p>
|
|
1539
|
-
<strong>
|
|
1982
|
+
<strong>Example:</strong>
|
|
1540
1983
|
</p>
|
|
1541
1984
|
|
|
1542
|
-
<
|
|
1543
|
-
<span
|
|
1544
|
-
<span class="
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1985
|
+
<div class="highlight">
|
|
1986
|
+
<pre><span></span><span class="c1">// Good: reuse options</span>
|
|
1987
|
+
<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>
|
|
1988
|
+
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
|
1989
|
+
<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">docs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="n">lens</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span>
|
|
1990
|
+
<span class="w"> </span><span class="c1">// Process...</span>
|
|
1991
|
+
<span class="w"> </span><span class="n">apex_free_string</span><span class="p">(</span><span class="n">html</span><span class="p">);</span>
|
|
1548
1992
|
<span class="p">}</span>
|
|
1549
|
-
</
|
|
1993
|
+
</pre>
|
|
1994
|
+
</div>
|
|
1550
1995
|
|
|
1551
1996
|
<h2 id="related">
|
|
1552
1997
|
Related
|
|
@@ -1555,19 +2000,48 @@ gcc your_app.o <span class="nt">-L</span>/usr/local/lib <span class="nt">-lapex<
|
|
|
1555
2000
|
<ul>
|
|
1556
2001
|
|
|
1557
2002
|
<li>
|
|
1558
|
-
<a href="Xcode-Integration.html">
|
|
2003
|
+
<a href="Xcode-Integration.html">Xcode Integration</a> - Using Apex in Xcode projects
|
|
1559
2004
|
</li>
|
|
1560
2005
|
|
|
1561
2006
|
<li>
|
|
1562
|
-
<a href="Modes.html">
|
|
2007
|
+
<a href="Modes.html">Modes</a> - Understanding processor modes
|
|
1563
2008
|
</li>
|
|
1564
2009
|
|
|
1565
2010
|
<li>
|
|
1566
|
-
<a href="Header-IDs.html">
|
|
2011
|
+
<a href="Header-IDs.html">Header IDs</a> - Header ID generation options
|
|
1567
2012
|
</li>
|
|
1568
2013
|
|
|
1569
2014
|
</ul>
|
|
1570
2015
|
|
|
2016
|
+
<h1 id="index-section">
|
|
2017
|
+
Index
|
|
2018
|
+
</h1>
|
|
2019
|
+
|
|
2020
|
+
<div class="index">
|
|
2021
|
+
|
|
2022
|
+
<dl>
|
|
2023
|
+
|
|
2024
|
+
<dt>
|
|
2025
|
+
H
|
|
2026
|
+
</dt>
|
|
2027
|
+
|
|
2028
|
+
<dd>
|
|
2029
|
+
|
|
2030
|
+
<ul>
|
|
2031
|
+
|
|
2032
|
+
<li>
|
|
2033
|
+
|
|
2034
|
+
html <a class="index-return" href="#idxref-0"><sup>[go]</sup></a>
|
|
2035
|
+
</li>
|
|
2036
|
+
|
|
2037
|
+
</ul>
|
|
2038
|
+
|
|
2039
|
+
</dd>
|
|
2040
|
+
|
|
2041
|
+
</dl>
|
|
2042
|
+
|
|
2043
|
+
</div>
|
|
2044
|
+
|
|
1571
2045
|
<script>
|
|
1572
2046
|
// Hamburger menu functionality
|
|
1573
2047
|
(function() {
|