apex-ruby 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +119 -0
  3. data/apex-ruby.gemspec +31 -0
  4. data/ext/apex_ext/apex_ext.c +215 -0
  5. data/ext/apex_ext/apex_src/BENCHMARK.md +32 -0
  6. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +67 -0
  7. data/ext/apex_ext/apex_src/CHANGELOG.md +2454 -0
  8. data/ext/apex_ext/apex_src/CMakeLists.txt +454 -0
  9. data/ext/apex_ext/apex_src/Dockerfile.linux-build +15 -0
  10. data/ext/apex_ext/apex_src/Formula/apex.rb +38 -0
  11. data/ext/apex_ext/apex_src/Info.plist.in +27 -0
  12. data/ext/apex_ext/apex_src/LICENSE +21 -0
  13. data/ext/apex_ext/apex_src/Package.swift +160 -0
  14. data/ext/apex_ext/apex_src/PackageSupport/README.md +17 -0
  15. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_export.h +20 -0
  16. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark-gfm_version.h +14 -0
  17. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +4 -0
  18. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/config.h +41 -0
  19. data/ext/apex_ext/apex_src/README.md +452 -0
  20. data/ext/apex_ext/apex_src/VERSION +1 -0
  21. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  22. data/ext/apex_ext/apex_src/apex-plugins.json.example +20 -0
  23. data/ext/apex_ext/apex_src/apex.pc.in +11 -0
  24. data/ext/apex_ext/apex_src/cli/main.c +2720 -0
  25. data/ext/apex_ext/apex_src/debug_test.sh +22 -0
  26. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +451 -0
  27. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +166 -0
  28. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +220 -0
  29. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +501 -0
  30. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +73 -0
  31. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +391 -0
  32. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +237 -0
  33. data/ext/apex_ext/apex_src/docs/FUTURE_FEATURES.md +456 -0
  34. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +210 -0
  35. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +344 -0
  36. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +144 -0
  37. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +278 -0
  38. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +321 -0
  39. data/ext/apex_ext/apex_src/docs/PROGRESS.md +167 -0
  40. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +174 -0
  41. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +243 -0
  42. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +316 -0
  43. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +803 -0
  44. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +91 -0
  45. data/ext/apex_ext/apex_src/documentation/README.md +160 -0
  46. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +365 -0
  47. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +24 -0
  48. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +1737 -0
  49. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +1420 -0
  50. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3574 -0
  51. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +1603 -0
  52. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +910 -0
  53. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +1168 -0
  54. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +1003 -0
  55. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +1308 -0
  56. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +1078 -0
  57. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +1622 -0
  58. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +1168 -0
  59. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +1698 -0
  60. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +1531 -0
  61. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +1980 -0
  62. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +1368 -0
  63. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +1151 -0
  64. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +2861 -0
  65. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +3981 -0
  66. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +1454 -0
  67. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +1200 -0
  68. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +2066 -0
  69. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  70. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  71. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
  72. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +22 -0
  73. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  74. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  75. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  76. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  77. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  78. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  79. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  80. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  81. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +914 -0
  82. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +399 -0
  83. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  84. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  85. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +772 -0
  86. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +678 -0
  87. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +873 -0
  88. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +733 -0
  89. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +17073 -0
  90. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +64 -0
  91. data/ext/apex_ext/apex_src/documentation/shared_styles.css +646 -0
  92. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +260 -0
  93. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +119 -0
  94. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +11 -0
  95. data/ext/apex_ext/apex_src/examples/example.html +53 -0
  96. data/ext/apex_ext/apex_src/examples/example.md +85 -0
  97. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +158 -0
  98. data/ext/apex_ext/apex_src/examples/kbd.md +8 -0
  99. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +250 -0
  100. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +9 -0
  101. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  102. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  103. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  104. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  105. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  106. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  107. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  108. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  109. data/ext/apex_ext/apex_src/include/apex/apex.h +247 -0
  110. data/ext/apex_ext/apex_src/include/apex/buffer.h +93 -0
  111. data/ext/apex_ext/apex_src/include/apex/module.modulemap +16 -0
  112. data/ext/apex_ext/apex_src/include/apex/parser.h +150 -0
  113. data/ext/apex_ext/apex_src/include/apex/renderer.h +39 -0
  114. data/ext/apex_ext/apex_src/man/apex-config.5 +374 -0
  115. data/ext/apex_ext/apex_src/man/apex-config.5.md +260 -0
  116. data/ext/apex_ext/apex_src/man/apex-plugins.7 +456 -0
  117. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +365 -0
  118. data/ext/apex_ext/apex_src/man/apex.1 +828 -0
  119. data/ext/apex_ext/apex_src/man/apex.1.md +643 -0
  120. data/ext/apex_ext/apex_src/man/apex.1.new +338 -0
  121. data/ext/apex_ext/apex_src/objc/Apex.swift +237 -0
  122. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +117 -0
  123. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +332 -0
  124. data/ext/apex_ext/apex_src/src/_README.md +358 -0
  125. data/ext/apex_ext/apex_src/src/apex.c +6326 -0
  126. data/ext/apex_ext/apex_src/src/buffer.c +93 -0
  127. data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +362 -0
  128. data/ext/apex_ext/apex_src/src/extensions/abbreviations.h +45 -0
  129. data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.c +184 -0
  130. data/ext/apex_ext/apex_src/src/extensions/advanced_footnotes.h +50 -0
  131. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +1897 -0
  132. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.h +42 -0
  133. data/ext/apex_ext/apex_src/src/extensions/callouts.c +215 -0
  134. data/ext/apex_ext/apex_src/src/extensions/callouts.h +53 -0
  135. data/ext/apex_ext/apex_src/src/extensions/citations.c +2042 -0
  136. data/ext/apex_ext/apex_src/src/extensions/citations.h +163 -0
  137. data/ext/apex_ext/apex_src/src/extensions/critic.c +329 -0
  138. data/ext/apex_ext/apex_src/src/extensions/critic.h +48 -0
  139. data/ext/apex_ext/apex_src/src/extensions/definition_list.c +1670 -0
  140. data/ext/apex_ext/apex_src/src/extensions/definition_list.h +42 -0
  141. data/ext/apex_ext/apex_src/src/extensions/emoji.c +710 -0
  142. data/ext/apex_ext/apex_src/src/extensions/emoji.h +38 -0
  143. data/ext/apex_ext/apex_src/src/extensions/emoji_data.h +942 -0
  144. data/ext/apex_ext/apex_src/src/extensions/fenced_divs.c +925 -0
  145. data/ext/apex_ext/apex_src/src/extensions/fenced_divs.h +43 -0
  146. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +869 -0
  147. data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1121 -0
  148. data/ext/apex_ext/apex_src/src/extensions/grid_tables.h +33 -0
  149. data/ext/apex_ext/apex_src/src/extensions/header_ids.c +626 -0
  150. data/ext/apex_ext/apex_src/src/extensions/header_ids.h +60 -0
  151. data/ext/apex_ext/apex_src/src/extensions/highlight.c +135 -0
  152. data/ext/apex_ext/apex_src/src/extensions/highlight.h +16 -0
  153. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +408 -0
  154. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +42 -0
  155. data/ext/apex_ext/apex_src/src/extensions/ial.c +4084 -0
  156. data/ext/apex_ext/apex_src/src/extensions/ial.h +145 -0
  157. data/ext/apex_ext/apex_src/src/extensions/includes.c +1536 -0
  158. data/ext/apex_ext/apex_src/src/extensions/includes.h +54 -0
  159. data/ext/apex_ext/apex_src/src/extensions/index.c +967 -0
  160. data/ext/apex_ext/apex_src/src/extensions/index.h +90 -0
  161. data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.c +205 -0
  162. data/ext/apex_ext/apex_src/src/extensions/inline_footnotes.h +34 -0
  163. data/ext/apex_ext/apex_src/src/extensions/inline_tables.c +332 -0
  164. data/ext/apex_ext/apex_src/src/extensions/inline_tables.h +13 -0
  165. data/ext/apex_ext/apex_src/src/extensions/insert.c +248 -0
  166. data/ext/apex_ext/apex_src/src/extensions/insert.h +18 -0
  167. data/ext/apex_ext/apex_src/src/extensions/math.c +279 -0
  168. data/ext/apex_ext/apex_src/src/extensions/math.h +32 -0
  169. data/ext/apex_ext/apex_src/src/extensions/metadata.c +3046 -0
  170. data/ext/apex_ext/apex_src/src/extensions/metadata.h +125 -0
  171. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +1297 -0
  172. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.h +39 -0
  173. data/ext/apex_ext/apex_src/src/extensions/special_markers.c +194 -0
  174. data/ext/apex_ext/apex_src/src/extensions/special_markers.h +29 -0
  175. data/ext/apex_ext/apex_src/src/extensions/sup_sub.c +405 -0
  176. data/ext/apex_ext/apex_src/src/extensions/sup_sub.h +16 -0
  177. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +468 -0
  178. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.h +44 -0
  179. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +2679 -0
  180. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.h +23 -0
  181. data/ext/apex_ext/apex_src/src/extensions/toc.c +255 -0
  182. data/ext/apex_ext/apex_src/src/extensions/toc.h +34 -0
  183. data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +624 -0
  184. data/ext/apex_ext/apex_src/src/extensions/wiki_links.h +58 -0
  185. data/ext/apex_ext/apex_src/src/html_renderer.c +2762 -0
  186. data/ext/apex_ext/apex_src/src/html_renderer.h +126 -0
  187. data/ext/apex_ext/apex_src/src/parser.c +227 -0
  188. data/ext/apex_ext/apex_src/src/plugins.c +895 -0
  189. data/ext/apex_ext/apex_src/src/plugins.h +39 -0
  190. data/ext/apex_ext/apex_src/src/plugins_env.c +187 -0
  191. data/ext/apex_ext/apex_src/src/plugins_remote.c +263 -0
  192. data/ext/apex_ext/apex_src/src/pretty_html.c +358 -0
  193. data/ext/apex_ext/apex_src/src/renderer.c +241 -0
  194. data/ext/apex_ext/apex_src/src/utf8.c +56 -0
  195. data/ext/apex_ext/apex_src/test-linux-build.sh +20 -0
  196. data/ext/apex_ext/apex_src/test.html +103 -0
  197. data/ext/apex_ext/apex_src/test_coverage.sh +121 -0
  198. data/ext/apex_ext/apex_src/test_ial_fenced.md +6 -0
  199. data/ext/apex_ext/apex_src/test_math_norm.py +79 -0
  200. data/ext/apex_ext/apex_src/test_pandoc_output.html +48 -0
  201. data/ext/apex_ext/apex_src/test_spm.sh +107 -0
  202. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +50 -0
  203. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +229 -0
  204. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +24 -0
  205. data/ext/apex_ext/apex_src/tests/README.md +146 -0
  206. data/ext/apex_ext/apex_src/tests/benchmark.sh +113 -0
  207. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +166 -0
  208. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +31 -0
  209. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +25 -0
  210. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +24 -0
  211. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +33 -0
  212. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +26 -0
  213. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +260 -0
  214. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +6 -0
  215. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +7 -0
  216. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +9 -0
  217. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +5 -0
  218. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +5 -0
  219. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +620 -0
  220. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +3 -0
  221. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +11 -0
  222. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +177 -0
  223. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +94 -0
  224. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +3 -0
  225. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +3 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +74 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +27 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +60 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +27 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +94 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +16 -0
  232. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +4 -0
  233. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +5 -0
  234. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +5 -0
  235. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +2 -0
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +11 -0
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +8 -0
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +4 -0
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +7 -0
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  241. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +1094 -0
  242. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +11 -0
  243. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +96 -0
  244. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +43 -0
  245. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +12 -0
  246. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +53 -0
  247. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +37 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +93 -0
  249. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +38 -0
  250. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +12 -0
  251. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +15 -0
  252. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +15 -0
  253. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +105 -0
  254. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +143 -0
  255. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +96 -0
  256. data/ext/apex_ext/apex_src/tests/gh_api_test.md +6 -0
  257. data/ext/apex_ext/apex_src/tests/ial_demo.html +186 -0
  258. data/ext/apex_ext/apex_src/tests/include_code.py +19 -0
  259. data/ext/apex_ext/apex_src/tests/include_snippet.md +15 -0
  260. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +64 -0
  261. data/ext/apex_ext/apex_src/tests/sample_data.csv +7 -0
  262. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +4 -0
  263. data/ext/apex_ext/apex_src/tests/test_basic.c +74 -0
  264. data/ext/apex_ext/apex_src/tests/test_extensions.c +2116 -0
  265. data/ext/apex_ext/apex_src/tests/test_helpers.c +183 -0
  266. data/ext/apex_ext/apex_src/tests/test_helpers.h +91 -0
  267. data/ext/apex_ext/apex_src/tests/test_ial.c +282 -0
  268. data/ext/apex_ext/apex_src/tests/test_links.c +418 -0
  269. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +265 -0
  270. data/ext/apex_ext/apex_src/tests/test_metadata.c +908 -0
  271. data/ext/apex_ext/apex_src/tests/test_output.c +1118 -0
  272. data/ext/apex_ext/apex_src/tests/test_plugins.c +219 -0
  273. data/ext/apex_ext/apex_src/tests/test_refs.bib +31 -0
  274. data/ext/apex_ext/apex_src/tests/test_runner.c +244 -0
  275. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +198 -0
  276. data/ext/apex_ext/apex_src/tests/test_tables.c +862 -0
  277. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +9 -0
  278. data/ext/apex_ext/apex_src/tests/yaml_test.md +13 -0
  279. data/ext/apex_ext/apex_src/tests.rb +39 -0
  280. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +48 -0
  281. data/ext/apex_ext/apex_src/vendor/cmark-gfm/COPYING +170 -0
  282. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +14 -0
  283. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +43 -0
  284. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +74 -0
  285. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +38 -0
  286. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +206 -0
  287. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +30 -0
  288. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +15 -0
  289. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +16 -0
  290. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +111 -0
  291. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +35 -0
  292. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +1169 -0
  293. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +21 -0
  294. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +16 -0
  295. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +13 -0
  296. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +11 -0
  297. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +14 -0
  298. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +9 -0
  299. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +10 -0
  300. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +32 -0
  301. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +8 -0
  302. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +67 -0
  303. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +36 -0
  304. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +15 -0
  305. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +17 -0
  306. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +14 -0
  307. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +3 -0
  308. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +5 -0
  309. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +5 -0
  310. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +5 -0
  311. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +11 -0
  312. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +15 -0
  313. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +44 -0
  314. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +23 -0
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +13 -0
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +24 -0
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +13 -0
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +18 -0
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +595 -0
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +19 -0
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +33 -0
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +1245 -0
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +1495 -0
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +119 -0
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +508 -0
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.h +8 -0
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/cmark-gfm-core-extensions.h +54 -0
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/core-extensions.c +27 -0
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.c +879 -0
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.h +24 -0
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +92 -0
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.c +167 -0
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/strikethrough.h +9 -0
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +917 -0
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.h +12 -0
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.c +60 -0
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tagfilter.h +8 -0
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.c +156 -0
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/tasklist.h +8 -0
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +22 -0
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +12 -0
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +91 -0
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +110 -0
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +28 -0
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +10 -0
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +133 -0
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +78 -0
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +1041 -0
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +1 -0
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +230 -0
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/arena.c +104 -0
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +1622 -0
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.c +278 -0
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/buffer.h +116 -0
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/case_fold_switch.inc +4327 -0
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/chunk.h +135 -0
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm-extension_api.h +737 -0
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm.h +833 -0
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +7 -0
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark.c +55 -0
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.c +44 -0
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark_ctype.h +33 -0
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/commonmark.c +514 -0
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +76 -0
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/entities.inc +2138 -0
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.c +63 -0
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/footnotes.h +27 -0
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini.h +57 -0
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_href_e.c +100 -0
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_e.c +66 -0
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/houdini_html_u.c +149 -0
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.c +502 -0
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/html.h +27 -0
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.c +1788 -0
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/inlines.h +29 -0
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.c +159 -0
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/iterator.h +26 -0
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/latex.c +468 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +10 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/linked_list.c +37 -0
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +328 -0
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/man.c +274 -0
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.c +129 -0
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/map.h +44 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.c +1045 -0
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/node.h +167 -0
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/parser.h +59 -0
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plaintext.c +218 -0
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.c +36 -0
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/plugin.h +34 -0
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.c +43 -0
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/references.h +26 -0
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.c +63 -0
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/registry.h +24 -0
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.c +213 -0
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/render.h +62 -0
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.c +14056 -0
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.h +70 -0
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +365 -0
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.c +149 -0
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/syntax_extension.h +34 -0
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.c +317 -0
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/utf8.h +35 -0
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/xml.c +182 -0
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +10 -0
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +114 -0
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +49 -0
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +58 -0
  409. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +105 -0
  410. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +67 -0
  411. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  412. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +38 -0
  413. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +920 -0
  414. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +67 -0
  415. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +194 -0
  416. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +160 -0
  417. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +375 -0
  418. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +50 -0
  419. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +4 -0
  420. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +177 -0
  421. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +10212 -0
  422. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +152 -0
  423. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +17 -0
  424. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +41 -0
  425. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +13 -0
  426. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +32 -0
  427. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +22 -0
  428. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +319 -0
  429. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +80 -0
  430. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +104 -0
  431. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +6 -0
  432. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +37 -0
  433. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +15 -0
  434. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +208 -0
  435. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +109 -0
  436. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +160 -0
  437. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +372 -0
  438. data/ext/apex_ext/apex_src/vendor/libyaml/License +20 -0
  439. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +51 -0
  440. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +46 -0
  441. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +89 -0
  442. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +3 -0
  443. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +4 -0
  444. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +73 -0
  445. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +222 -0
  446. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +17 -0
  447. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +26 -0
  448. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +26 -0
  449. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +29 -0
  450. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +24 -0
  451. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +10 -0
  452. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +2 -0
  453. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +14 -0
  454. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +1 -0
  455. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +2 -0
  456. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +1 -0
  457. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +7 -0
  458. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +7 -0
  459. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +3 -0
  460. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +17 -0
  461. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +1999 -0
  462. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +77 -0
  463. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +32 -0
  464. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +1 -0
  465. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +23 -0
  466. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +1 -0
  467. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +4 -0
  468. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +1393 -0
  469. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +394 -0
  470. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +2358 -0
  471. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +544 -0
  472. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +1416 -0
  473. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +469 -0
  474. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +3598 -0
  475. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +141 -0
  476. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +684 -0
  477. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +27 -0
  478. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +9 -0
  479. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +63 -0
  480. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +800 -0
  481. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +1127 -0
  482. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +217 -0
  483. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +202 -0
  484. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +29 -0
  485. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +314 -0
  486. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +290 -0
  487. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +327 -0
  488. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +63 -0
  489. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +196 -0
  490. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +88 -0
  491. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +63 -0
  492. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +354 -0
  493. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +29 -0
  494. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +10 -0
  495. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +16 -0
  496. data/ext/apex_ext/extconf.rb +103 -0
  497. data/lib/apex/configurable.rb +46 -0
  498. data/lib/apex/document.rb +66 -0
  499. data/lib/apex/version.rb +15 -0
  500. data/lib/apex.rb +28 -0
  501. metadata +544 -0
@@ -0,0 +1,250 @@
1
+ #!/usr/bin/env ruby
2
+ # Minimal Apex pre-parse plugin for {% kbd ... %} syntax
3
+ #
4
+ # Protocol:
5
+ # - Reads a single JSON object from stdin:
6
+ # { "version": 1, "plugin_id": "...", "phase": "pre_parse", "text": "..." }
7
+ # - Writes the transformed markdown text to stdout (no JSON response).
8
+ #
9
+ # To use with Apex:
10
+ # export APEX_PRE_PARSE_PLUGIN="/usr/bin/env ruby /path/to/apex/examples/kbd_plugin.rb"
11
+ # apex input.md
12
+
13
+ require 'json'
14
+
15
+ payload = JSON.parse($stdin.read)
16
+ text = payload['text'] || ''
17
+
18
+ class String
19
+ def clean_combo
20
+ gsub!(/(?<=\S)-(?=\S)/, ' ')
21
+ gsub!(/\b(comm(and)?|cmd|clover)\b/i, '@')
22
+ gsub!(/\b(cont(rol)?|ctr?l)\b/i, '^')
23
+ gsub!(/\b(opt(ion)?|alt)\b/i, '~')
24
+ gsub!(/\bshift\b/i, '$')
25
+ gsub!(/\b(func(tion)?|fn)\b/i, '*')
26
+ gsub!(/\b(hyper)\b/i, '%')
27
+ self
28
+ end
29
+
30
+ def lower_to_upper
31
+ doubles = [
32
+ [',', '<'], ['.', '>'], ['/', '?'], [';', ':'], ["'", '"'],
33
+ ['[', '{'], [']', '}'], ['\\', '|'], ['-', '_'], ['=', '+']
34
+ ]
35
+ lowers = doubles.map { |d| d[0] }
36
+ uppers = doubles.map { |d| d[1] }
37
+ lowers.include?(self) ? uppers[lowers.index(self)] : self
38
+ end
39
+
40
+ def upper?
41
+ %w(< > ? : " { } | ! @ # $ % ^ & * \( \) _ +).include?(self)
42
+ end
43
+
44
+ def clean_combo!
45
+ replace clean_combo
46
+ end
47
+
48
+ def to_mod
49
+ characters = {
50
+ '^' => '⌃',
51
+ '~' => '⌥',
52
+ '$' => '⇧',
53
+ '@' => '⌘',
54
+ '*' => 'Fn',
55
+ '%' => 'Hyper'
56
+ }
57
+ characters.key?(self) ? characters[self] : self
58
+ end
59
+
60
+ def mod_to_ent(use_symbol)
61
+ entities = {
62
+ '⌃' => '&#8963;',
63
+ '⌥' => '&#8997;',
64
+ '⇧' => '&#8679;',
65
+ '⌘' => '&#8984;',
66
+ 'Fn' => 'Fn',
67
+ 'Hyper' => 'Hyper'
68
+ }
69
+ names = {
70
+ '⌃' => 'Control',
71
+ '⌥' => 'Option',
72
+ '⇧' => 'Shift',
73
+ '⌘' => 'Command',
74
+ 'Fn' => 'Function',
75
+ 'Hyper' => 'Hyper (Control+Option+Shift+Command)'
76
+ }
77
+ if entities.key?(self)
78
+ use_symbol ? entities[self] : names[self]
79
+ else
80
+ self
81
+ end
82
+ end
83
+
84
+ def mod_to_title
85
+ entities = {
86
+ '⌃' => 'Control',
87
+ '⌥' => 'Option',
88
+ '⇧' => 'Shift',
89
+ '⌘' => 'Command',
90
+ 'Fn' => 'Function',
91
+ 'Hyper' => 'Hyper (Control+Option+Shift+Command)'
92
+ }
93
+ entities.key?(self) ? entities[self] : self
94
+ end
95
+
96
+ def clarify_characters
97
+ unclear = {
98
+ ',' => 'Comma (,)',
99
+ '.' => 'Period (.)',
100
+ ';' => 'Semicolon (;)',
101
+ ':' => 'Colon (:)',
102
+ '`' => 'Backtick (`)',
103
+ '-' => 'Minus Sign (-)',
104
+ '+' => 'Plus Sign (+)',
105
+ '=' => 'Equals Sign (=)',
106
+ '_' => 'Underscore (_)',
107
+ '~' => 'Tilde (~)',
108
+ '\\' => 'Backslash (\\)',
109
+ '|' => 'Pipe (|)',
110
+ '←' => 'Left Arrow (←)',
111
+ '→' => 'Right Arrow (→)',
112
+ '↑' => 'Up Arrow (↑)',
113
+ '↓' => 'Down Arrow (↓)'
114
+ }
115
+ unclear.fetch(self, self)
116
+ end
117
+
118
+ def name_to_ent(use_symbol)
119
+ k = case strip.downcase
120
+ when /^f(\d{1,2})$/
121
+ num = Regexp.last_match(1)
122
+ ["F#{num}", "F#{num}", "F#{num} Key"]
123
+ when /^apple$/
124
+ ['Apple', '&#63743;', 'Apple menu']
125
+ when /^tab$/
126
+ ['', '&#8677;', 'Tab Key']
127
+ when /^caps(lock)?$/
128
+ ['Caps Lock', '&#8682;', 'Caps Lock Key']
129
+ when /^eject$/
130
+ ['Eject', '&#9167;', 'Eject Key']
131
+ when /^return$/
132
+ ['Return', '&#9166;', 'Return Key']
133
+ when /^enter$/
134
+ ['Enter', '&#8996;', 'Enter (Fn Return) Key']
135
+ when /^(del(ete)?|back(space)?)$/
136
+ ['Del', '&#9003;', 'Delete']
137
+ when /^fwddel(ete)?$/
138
+ ['Fwd Del', '&#8998;', 'Forward Delete (Fn Delete)']
139
+ when /^(esc(ape)?)$/
140
+ ['Esc', '&#9099;', 'Escape Key']
141
+ when /^(right|rt)$/
142
+ ['Right Arrow', '&#8594;', 'Right Arrow Key']
143
+ when /^(left|lt)$/
144
+ ['Left Arrow', '&#8592;', 'Left Arrow Key']
145
+ when /^up$/
146
+ ['Up Arrow', '&#8593;', 'Up Arrow Key']
147
+ when /^(down|dn)$/
148
+ ['Down Arrow', '&#8595;', 'Down Arrow Key']
149
+ when /^p(age|g)up$/
150
+ ['PgUp', '&#8670;', 'Page Up Key']
151
+ when /^p(age|g)d(ow)?n$/
152
+ ['PgDn', '&#8671;', 'Page Down Key']
153
+ when /^home$/
154
+ ['Home', '&#8598;', 'Home Key']
155
+ when /^end$/
156
+ ['End', '&#8600;', 'End Key']
157
+ when /^semi(colon)$/
158
+ ['Semicolon', ';', 'Semicolon']
159
+ when /^(single([- ]?quote?)?|quote?)$/
160
+ ['Single Quote', "'", 'Single Quote']
161
+ when /^double([- ]?quote?)?$/
162
+ ['Double Quote', '"', 'Double Quote']
163
+ when /^click$/
164
+ ['click', '<i class="fas fa-mouse-pointer"></i>', 'left click']
165
+ when /^hyper/i
166
+ ['Hyper', 'Hyper', 'Hyper (Control+Option+Shift+Command)']
167
+ else
168
+ [self, self, capitalize]
169
+ end
170
+ use_symbol ? [k[1], k[2]] : [k[0], k[2]]
171
+ end
172
+ end
173
+
174
+ def render_kbd(markup, use_key_symbol: true, use_mod_symbol: true, use_plus: false)
175
+ combos = []
176
+
177
+ markup.split(%r{ / }).each do |combo|
178
+ mods = []
179
+ key = ''
180
+ combo.clean_combo!
181
+ combo.strip.split(//).each do |char|
182
+ next if char == ' '
183
+ case char
184
+ when /[⌃⇧⌥⌘]/
185
+ mods << char
186
+ when /[*\^$@~%]/
187
+ mods << char.to_mod
188
+ else
189
+ key << char
190
+ end
191
+ end
192
+ mods = sort_mods(mods)
193
+ title = ''
194
+ if key.length == 1
195
+ if mods.empty? && (key =~ /[A-Z]/ || key.upper?)
196
+ mods << '$'.to_mod
197
+ end
198
+ key = key.lower_to_upper if mods.include?('$'.to_mod)
199
+ key = key.upcase
200
+ title = key.clarify_characters
201
+ elsif mods.include?('$'.to_mod)
202
+ key = key.lower_to_upper
203
+ end
204
+ key.gsub!(/"/, '&quot;')
205
+ combos << { mods: mods, key: key, title: title }
206
+ end
207
+
208
+ outputs = combos.map do |combo|
209
+ next if combo[:mods].empty? && combo[:key].empty?
210
+ kbds = []
211
+ title = []
212
+
213
+ combo[:mods].each do |mod|
214
+ mod_class = use_mod_symbol ? 'mod symbol' : 'mod'
215
+ kbds << %(<kbd class="#{mod_class}">#{mod.mod_to_ent(use_mod_symbol)}</kbd>)
216
+ title << mod.mod_to_title
217
+ end
218
+
219
+ unless combo[:key].empty?
220
+ key, keytitle = combo[:key].name_to_ent(use_key_symbol)
221
+ key_class = use_key_symbol ? 'key symbol' : 'key'
222
+ keytitle = keytitle.clarify_characters if keytitle.length == 1
223
+ kbds << %(<kbd class="#{key_class}">#{key}</kbd>)
224
+ title << keytitle
225
+ end
226
+
227
+ kbd = if use_mod_symbol
228
+ use_plus ? kbds.join('<span class="keycombo combiner">+</span>') : kbds.join
229
+ else
230
+ kbds.join('-')
231
+ end
232
+ span_class = "keycombo #{use_mod_symbol && !use_plus ? 'combined' : 'separated'}"
233
+ %(<span class="#{span_class}" title="#{title.join('-')}">#{kbd}</span>)
234
+ end.compact
235
+
236
+ outputs.join('<span class="keycombo separator">/</span>')
237
+ end
238
+
239
+ def sort_mods(mods)
240
+ order = ['Fn', '⌃', '⌥', '⇧', '⌘']
241
+ mods.uniq.sort { |a, b| order.index(a) < order.index(b) ? -1 : 1 }
242
+ end
243
+
244
+ result = text.gsub(/\{%\s*kbd\s+([^%]+)%\}/) do
245
+ markup = Regexp.last_match(1)
246
+ render_kbd(markup)
247
+ end
248
+
249
+ print result
250
+
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: kbd-inline
3
+ description: Inline {% kbd ... %} keyboard shortcut syntax
4
+ phase: pre_parse
5
+ handler.command: "/usr/bin/env ruby ${APEX_PLUGIN_DIR}/kbd_plugin.rb"
6
+ priority: 100
7
+ timeout_ms: 500
8
+ ---
9
+
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Apex - Unified Markdown Processor
3
+ *
4
+ * A comprehensive Markdown processor with support for CommonMark, GFM,
5
+ * MultiMarkdown, Kramdown, and Marked's special syntax extensions.
6
+ */
7
+
8
+ #ifndef APEX_H
9
+ #define APEX_H
10
+
11
+ #ifdef __cplusplus
12
+ extern "C" {
13
+ #endif
14
+
15
+ #include <stddef.h>
16
+ #include <stdbool.h>
17
+
18
+ #define APEX_VERSION_MAJOR 0
19
+ #define APEX_VERSION_MINOR 1
20
+ #define APEX_VERSION_PATCH 73
21
+ #define APEX_VERSION_STRING "0.1.73"
22
+
23
+ /**
24
+ * Processor compatibility modes
25
+ */
26
+ #ifndef APEX_MODE_DEFINED
27
+ #define APEX_MODE_DEFINED
28
+ typedef enum {
29
+ APEX_MODE_COMMONMARK = 0, /* Pure CommonMark spec */
30
+ APEX_MODE_GFM = 1, /* GitHub Flavored Markdown */
31
+ APEX_MODE_MULTIMARKDOWN = 2, /* MultiMarkdown compatibility */
32
+ APEX_MODE_KRAMDOWN = 3, /* Kramdown compatibility */
33
+ APEX_MODE_UNIFIED = 4 /* All features enabled */
34
+ } apex_mode_t;
35
+ #endif
36
+
37
+ /**
38
+ * Configuration options for the parser and renderer
39
+ */
40
+ typedef struct {
41
+ apex_mode_t mode;
42
+
43
+ /* Feature flags */
44
+ bool enable_plugins; /* Enable external/plugin processing */
45
+ bool enable_tables;
46
+ bool enable_footnotes;
47
+ bool enable_definition_lists;
48
+ bool enable_smart_typography;
49
+ bool enable_math;
50
+ bool enable_critic_markup;
51
+ bool enable_wiki_links;
52
+ bool enable_task_lists;
53
+ bool enable_attributes;
54
+ bool enable_callouts;
55
+ bool enable_marked_extensions;
56
+ bool enable_divs; /* Enable Pandoc fenced divs (Unified mode only) */
57
+ bool enable_spans; /* Enable bracketed spans [text]{IAL} (Pandoc-style) */
58
+
59
+ /* Critic markup mode */
60
+ int critic_mode; /* 0=markup (default), 1=accept, 2=reject */
61
+
62
+ /* Metadata handling */
63
+ bool strip_metadata;
64
+ bool enable_metadata_variables; /* [%key] replacement */
65
+ bool enable_metadata_transforms; /* [%key:transform] transforms */
66
+
67
+ /* File inclusion */
68
+ bool enable_file_includes;
69
+ int max_include_depth;
70
+ const char *base_directory;
71
+
72
+ /* Output options */
73
+ bool unsafe; /* Allow raw HTML */
74
+ bool validate_utf8;
75
+ bool github_pre_lang; /* Use GitHub code block language format */
76
+ bool standalone; /* Generate complete HTML document */
77
+ bool pretty; /* Pretty-print HTML with indentation */
78
+ const char **stylesheet_paths; /* NULL-terminated array of CSS file paths to link in head */
79
+ size_t stylesheet_count; /* Number of stylesheets */
80
+ const char *document_title; /* Title for HTML document */
81
+
82
+ /* Line break handling */
83
+ bool hardbreaks; /* Treat newlines as hard breaks (GFM style) */
84
+ bool nobreaks; /* Render soft breaks as spaces */
85
+
86
+ /* Header ID generation */
87
+ bool generate_header_ids; /* Generate IDs for headers */
88
+ bool header_anchors; /* Generate <a> anchor tags instead of header IDs */
89
+ int id_format; /* 0=GFM (with dashes), 1=MMD (no dashes) */
90
+
91
+ /* Table options */
92
+ bool relaxed_tables; /* Support tables without separator rows (kramdown/unified only) */
93
+ int caption_position; /* 0=above, 1=below (default: 1=below) */
94
+ bool per_cell_alignment; /* Enable per-cell alignment markers (colons at start/end of cells) */
95
+
96
+ /* List options */
97
+ bool allow_mixed_list_markers; /* Allow mixed list markers at same level (inherit type from first item) */
98
+ bool allow_alpha_lists; /* Support alpha list markers (a., b., c. and A., B., C.) */
99
+
100
+ /* Superscript and subscript */
101
+ bool enable_sup_sub; /* Support MultiMarkdown-style ^text^ and ~text~ syntax */
102
+
103
+ /* Strikethrough (GFM-style ~~text~~) */
104
+ bool enable_strikethrough;
105
+
106
+ /* Autolink options */
107
+ bool enable_autolink; /* Enable autolinking of URLs and email addresses */
108
+ bool obfuscate_emails; /* Obfuscate email links/text using HTML entities */
109
+
110
+ /* Image options */
111
+ bool embed_images; /* Embed local images as base64 data URLs */
112
+ bool enable_image_captions; /* Wrap images in <figure> with <figcaption> when alt/title present */
113
+ bool title_captions_only; /* When enable_image_captions is true, only add captions for images with a title attribute (ignore alt) */
114
+
115
+ /* Citation options */
116
+ bool enable_citations; /* Enable citation processing */
117
+ char **bibliography_files; /* NULL-terminated array of bibliography file paths */
118
+ const char *csl_file; /* CSL style file path */
119
+ bool suppress_bibliography; /* Suppress bibliography output */
120
+ bool link_citations; /* Link citations to bibliography entries */
121
+ bool show_tooltips; /* Show tooltips on citations */
122
+ const char *nocite; /* Comma-separated citation keys to include without citing, or "*" for all */
123
+
124
+ /* Index options */
125
+ bool enable_indices; /* Enable index processing */
126
+ bool enable_mmark_index_syntax; /* Enable mmark (!item) syntax */
127
+ bool enable_textindex_syntax; /* Enable TextIndex {^} syntax */
128
+ bool enable_leanpub_index_syntax; /* Enable Leanpub {i: "term"} syntax */
129
+ bool suppress_index; /* Suppress index output */
130
+ bool group_index_by_letter; /* Group index entries by first letter */
131
+
132
+ /* Wiki link options */
133
+ int wikilink_space; /* Space replacement: 0=dash, 1=none, 2=underscore, 3=space */
134
+ const char *wikilink_extension; /* File extension to append (e.g., "html") */
135
+ bool wikilink_sanitize; /* Sanitize URLs: lowercase, remove apostrophes, replace non-alnum */
136
+
137
+ /* Script injection options */
138
+ /* Raw <script>...</script> HTML snippets to inject either:
139
+ * - Before </body> when generating standalone HTML
140
+ * - At the end of the HTML fragment in snippet mode
141
+ *
142
+ * This is typically populated by the CLI --script flag.
143
+ */
144
+ char **script_tags; /* NULL-terminated array of script tag strings (may be NULL for none) */
145
+
146
+ /* Stylesheet embedding options */
147
+ /* When true and a stylesheet path is provided, Apex will attempt to
148
+ * read the CSS file and embed it directly into a <style> block in the
149
+ * document head instead of emitting a <link rel="stylesheet"> tag.
150
+ * This is typically enabled via the CLI --embed-css flag.
151
+ */
152
+ bool embed_stylesheet;
153
+
154
+ /* ARIA accessibility options */
155
+ bool enable_aria; /* Add ARIA labels and accessibility attributes to HTML output */
156
+
157
+ /* Emoji options */
158
+ bool enable_emoji_autocorrect; /* Enable emoji name autocorrect (enabled by default in unified mode) */
159
+
160
+ /* Syntax highlighting options */
161
+ const char *code_highlighter; /* External tool: "pygments", "skylighting", or NULL for no highlighting */
162
+ bool code_line_numbers; /* Enable line numbers in syntax-highlighted code blocks */
163
+ bool highlight_language_only; /* Only highlight code blocks that have a language specified */
164
+
165
+ /* Marked / integration-specific options */
166
+ bool enable_widont; /* Apply widont to headings (prevent short widows) */
167
+ bool code_is_poetry; /* Treat unlanguaged code blocks as poetry */
168
+ bool enable_markdown_in_html; /* Process markdown inside HTML when enabled */
169
+ bool random_footnote_ids; /* Use hash-based/randomized footnote IDs */
170
+ bool enable_hashtags; /* Convert #tags to span-marked hashtags */
171
+ bool style_hashtags; /* Use styled hashtag class instead of basic */
172
+ bool proofreader_mode; /* Convert == / ~~ to CriticMarkup syntax */
173
+ bool hr_page_break; /* Replace <hr> with page break divs */
174
+ bool title_from_h1; /* Use first H1 as document title fallback */
175
+ bool page_break_before_footnotes; /* Insert page break before footnotes section */
176
+
177
+ /* Source file information for plugins */
178
+ /* When Apex is invoked on a file, this is the full path to that file. */
179
+ /* When reading from stdin, this is either the base directory (if set) or empty. */
180
+ const char *input_file_path;
181
+
182
+ /* Progress reporting callback */
183
+ /* Called during processing to report progress. Parameters:
184
+ * - stage: Description of current processing stage (e.g., "Processing tables", "Running plugin: kbd")
185
+ * - percent: Progress percentage (0-100), or -1 if unknown
186
+ * - user_data: User-provided context (can be NULL)
187
+ * If NULL, no progress reporting is performed.
188
+ */
189
+ void (*progress_callback)(const char *stage, int percent, void *user_data);
190
+ void *progress_user_data; /* User data passed to progress callback */
191
+ } apex_options;
192
+
193
+ /**
194
+ * Get default options for a specific mode
195
+ */
196
+ apex_options apex_options_default(void);
197
+ apex_options apex_options_for_mode(apex_mode_t mode);
198
+
199
+ /**
200
+ * Main conversion function: Markdown to HTML
201
+ *
202
+ * @param markdown Input markdown text
203
+ * @param len Length of input text
204
+ * @param options Processing options (NULL for defaults)
205
+ * @return Newly allocated HTML string (must be freed with apex_free_string)
206
+ */
207
+ char *apex_markdown_to_html(const char *markdown, size_t len, const apex_options *options);
208
+
209
+ /**
210
+ * Wrap HTML content in complete HTML5 document structure
211
+ *
212
+ * @param content HTML content to wrap
213
+ * @param title Document title (NULL for default)
214
+ * @param stylesheet_paths NULL-terminated array of CSS file paths to link in head
215
+ * @param html_header Raw HTML to insert in <head> section (NULL for none)
216
+ * @param html_footer Raw HTML to append before </body> (NULL for none)
217
+ * @param language Language code for <html lang> attribute (NULL for "en")
218
+ * @return Newly allocated HTML document string (must be freed with apex_free_string)
219
+ */
220
+ char *apex_wrap_html_document(const char *content, const char *title, const char **stylesheet_paths, size_t stylesheet_count, const char *code_highlighter, const char *html_header, const char *html_footer, const char *language);
221
+
222
+ /**
223
+ * Pretty-print HTML with proper indentation
224
+ *
225
+ * @param html HTML to format
226
+ * @return Newly allocated formatted HTML string (must be freed with apex_free_string)
227
+ */
228
+ char *apex_pretty_print_html(const char *html);
229
+
230
+ /**
231
+ * Free a string allocated by Apex
232
+ */
233
+ void apex_free_string(char *str);
234
+
235
+ /**
236
+ * Get version information
237
+ */
238
+ const char *apex_version_string(void);
239
+ int apex_version_major(void);
240
+ int apex_version_minor(void);
241
+ int apex_version_patch(void);
242
+
243
+ #ifdef __cplusplus
244
+ }
245
+ #endif
246
+
247
+ #endif /* APEX_H */
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @file buffer.h
3
+ * @brief Dynamic string buffer for efficient string building
4
+ */
5
+
6
+ #ifndef APEX_BUFFER_H
7
+ #define APEX_BUFFER_H
8
+
9
+ #ifdef __cplusplus
10
+ extern "C" {
11
+ #endif
12
+
13
+ #include <stddef.h>
14
+ #include <stdbool.h>
15
+
16
+ /**
17
+ * Dynamic buffer structure
18
+ */
19
+ typedef struct {
20
+ char *data; /**< Buffer data */
21
+ size_t size; /**< Current size */
22
+ size_t capacity; /**< Allocated capacity */
23
+ } apex_buffer;
24
+
25
+ /**
26
+ * Initialize a buffer
27
+ *
28
+ * @param buf Buffer to initialize
29
+ * @param initial_capacity Initial capacity
30
+ */
31
+ void apex_buffer_init(apex_buffer *buf, size_t initial_capacity);
32
+
33
+ /**
34
+ * Free buffer resources
35
+ *
36
+ * @param buf Buffer to free
37
+ */
38
+ void apex_buffer_free(apex_buffer *buf);
39
+
40
+ /**
41
+ * Clear buffer contents
42
+ *
43
+ * @param buf Buffer to clear
44
+ */
45
+ void apex_buffer_clear(apex_buffer *buf);
46
+
47
+ /**
48
+ * Append string to buffer
49
+ *
50
+ * @param buf Buffer
51
+ * @param data String to append
52
+ * @param len Length of string
53
+ */
54
+ void apex_buffer_append(apex_buffer *buf, const char *data, size_t len);
55
+
56
+ /**
57
+ * Append null-terminated string to buffer
58
+ *
59
+ * @param buf Buffer
60
+ * @param str String to append
61
+ */
62
+ void apex_buffer_append_str(apex_buffer *buf, const char *str);
63
+
64
+ /**
65
+ * Append single character to buffer
66
+ *
67
+ * @param buf Buffer
68
+ * @param c Character to append
69
+ */
70
+ void apex_buffer_append_char(apex_buffer *buf, char c);
71
+
72
+ /**
73
+ * Get buffer contents as string
74
+ *
75
+ * @param buf Buffer
76
+ * @return Null-terminated string (do not free)
77
+ */
78
+ const char *apex_buffer_cstr(const apex_buffer *buf);
79
+
80
+ /**
81
+ * Detach buffer data (caller must free)
82
+ *
83
+ * @param buf Buffer
84
+ * @return Buffer data (must be freed with free())
85
+ */
86
+ char *apex_buffer_detach(apex_buffer *buf);
87
+
88
+ #ifdef __cplusplus
89
+ }
90
+ #endif
91
+
92
+ #endif /* APEX_BUFFER_H */
93
+
@@ -0,0 +1,16 @@
1
+ module Apex {
2
+ umbrella header "apex.h"
3
+ explicit module parser {
4
+ header "parser.h"
5
+ export *
6
+ }
7
+ explicit module renderer {
8
+ header "renderer.h"
9
+ export *
10
+ }
11
+ explicit module buffer {
12
+ header "buffer.h"
13
+ export *
14
+ }
15
+ export *
16
+ }