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,2454 @@
1
+ # Changelog
2
+
3
+ All notable changes to Apex will be documented in this file.
4
+
5
+ ## [0.1.73] - 2026-02-04
6
+
7
+ ### New
8
+
9
+ - Multi-image test coverage ensures that a reference-style image with attributes between two @2x images keeps its attributes without gaining an unwanted 2x srcset, and that the surrounding images still emit correct srcset values
10
+ - @3x image attribute adds support for 3x retina assets and automatically emits srcset entries for 1x, 2x, and 3x variants of the same path for both inline and reference-style images
11
+
12
+ ### Fixed
13
+
14
+ - @2x image attribute no longer mangles domains or query-string-only URLs; srcset 2x URLs are only generated when the path has a real file extension and the domain portion is never altered
15
+ - Reference-style image attributes (width, height, style, classes, id) are correctly applied in Unified, MultiMarkdown, and GFM modes, even when mixed with inline images and fenced div/figure blocks
16
+ - Reference-style image attributes no longer leak across images; inline images with @2x keep their own srcset and reference-style images only gain 2x srcset when explicitly marked
17
+
18
+ ## [0.1.72] - 2026-02-02
19
+
20
+ ### Changed
21
+
22
+ - --indices now enables mmark, TextIndex, and Leanpub syntax; Leanpub is on by default in unified mode.
23
+ - Index anchor IDs use idxref-N format (was idxref:N) to avoid emoji processing corrupting placeholders.
24
+
25
+ ### New
26
+
27
+ - Add Leanpub index syntax: {i: term}, {i: "term"}, and {i: "Main!sub"} for hierarchical entries under headings.
28
+ - {index} marker: write {index} in the document to place the generated index at that position (replaced with <!--INDEX--> internally).
29
+
30
+ ### Fixed
31
+
32
+ - TextIndex [term]{^} no longer includes the closing bracket in the index entry (e.g. "fresh" instead of "fresh]").
33
+ - Leanpub {i: term} is no longer consumed by MMD metadata or parsed as IAL; content is preserved in output.
34
+
35
+ ## [0.1.71] - 2026-01-30
36
+
37
+ ### Changed
38
+
39
+ - Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
40
+
41
+ ### New
42
+
43
+ - Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
44
+ - Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
45
+
46
+ ## [0.1.70] - 2026-01-30
47
+
48
+ ### Changed
49
+
50
+ - Strikethrough is now controlled by the enable_strikethrough option instead of mode; can be enabled in modes that lack it by default (commonmark, mmd, kramdown) and disabled in modes that include it (gfm, unified).
51
+
52
+ ### New
53
+
54
+ - Add --strikethrough and --no-strikethrough CLI flags to enable or disable GFM-style ~~strikethrough~~ processing independent of mode.
55
+ - Strikethrough is configurable via metadata using the strikethrough or strike-through keys (true/false).
56
+
57
+ ## [0.1.69] - 2026-01-30
58
+
59
+ ### Improved
60
+
61
+ - URLs with a protocol (http, https, etc.) are no longer URL-encoded so query parameters in image URLs are preserved.
62
+ - Image reference definitions with key= attributes or bare @2x after the URL are now split and applied (width, height, srcset) in all modes, not only when image attributes are enabled.
63
+
64
+ ### Fixed
65
+
66
+ - Paragraph IAL on the same line (no blank line), e.g. "Text\n{: .lead }", now applies the class to the paragraph.
67
+ - Block IAL (e.g. {: .lead }) inside fenced divs and markdown="1" blocks now applies to the previous paragraph and the IAL line is removed from output.
68
+ - Block IAL is now recognized when an HTML block (e.g. </div>) sits between the content paragraph and the IAL paragraph.
69
+ - Reference-style images (e.g. ![alt][ref] with [ref]: url width=250 height=83) no longer produce blank output; attributes are applied and refs are expanded correctly.
70
+ - First line of document that looks like a Markdown link or image (e.g. [![...](#){: .class }]) is no longer consumed as MMD metadata, fixing blank output for such content.
71
+ - Image width, height, and other attributes from reference definitions are now applied to images inside fenced divs (::: ... :::) and other HTML elements with markdown="1"; they were previously dropped when inner content was parsed and rendered separately.
72
+
73
+ ## [0.1.68] - 2026-01-30
74
+
75
+ ### Changed
76
+
77
+ - Run image caption conversion whenever HTML is produced so caption="" is always honored; pass enable_image_captions and title_captions_only into the converter.
78
+
79
+ ### New
80
+
81
+ - Allow caption="TEXT" attribute on images (IAL); always wraps in figure/figcaption even when --image-captions is disabled, and strips the caption attribute from the emitted img tag.
82
+ - Add --title-captions-only and --no-title-captions-only CLI flags.
83
+ - Add title-captions-only / title_captions_only metadata support.
84
+
85
+ ### Improved
86
+
87
+ - When --title-captions-only is set, automatically enable image captions so both flags are not required.
88
+
89
+ ## [0.1.67] - 2026-01-30
90
+
91
+ ### New
92
+
93
+ - Image attribute @2x in inline, reference-style, or IAL (e.g. ![alt](url @2x) or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
94
+
95
+ ### Fixed
96
+
97
+ - SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
98
+
99
+ ## [0.1.66] - 2026-01-30
100
+
101
+ ### New
102
+
103
+ - Image attribute @2x in inline, reference-style, or IAL (e.g. ![alt](url @2x) or [ref]: url @2x) emits srcset="url 1x, url@2x 2x"; the 2x asset is assumed to have the same path with @2x before the extension (e.g. icon.png -> icon@2x.png).
104
+
105
+ ### Fixed
106
+
107
+ - SPM builds no longer fail with "config.h" file not found or "Could not build module 'CcmarkGFM'" when adding Apex as an integrated Xcode package or as a Swift Package dependency.
108
+
109
+ ## [0.1.65] - 2026-01-29
110
+
111
+ ### Fixed
112
+
113
+ - SPM builds no longer fail with missing config.h or cmark-gfm_export.h when adding Apex via Swift Package Manager.
114
+ - SPM builds no longer fail at link time with undefined symbol _apex_apply_syntax_highlighting when adding Apex via Swift Package Manager.
115
+
116
+ ## [0.1.64] - 2026-01-29
117
+
118
+ ### Fixed
119
+
120
+ - Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
121
+ - Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
122
+ - Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
123
+ - Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with &lt;&lt; in table HTML postprocess).
124
+ - Rowspan no longer puts cell content in the opening tag (e.g. <td Engineering rowspan="2">); rowspan is now applied correctly so the first cell shows <td rowspan="2">A</td>.
125
+ - When injecting rowspan/colspan into table HTML, only the tag name (<td or <th) is copied then attributes are injected; content between tag name and ">" is skipped so malformed or erroneously placed content is never written into the tag.
126
+
127
+ ## [0.1.63] - 2026-01-29
128
+
129
+ ### Fixed
130
+
131
+ - Pandoc fenced divs using custom element names (e.g. ::: >custom-element customclass) now output correct HTML: the custom element wraps its paragraphs instead of the opening tag being incorrectly wrapped in a <p> (fixes GitHub issue #5).
132
+ - Escaped `\<<` in table cells now renders as literal `<<` in HTML (placeholder APEXLTLT is replaced with &lt;&lt; in table HTML postprocess).
133
+
134
+ ## [0.1.62] - 2026-01-29
135
+
136
+ ### Fixed
137
+
138
+ - Require Marked-style include syntax (`<<[file]`, `<<(file)`, `<<{file}`) to appear at the very beginning of a line, preventing indented code blocks from being processed as includes.
139
+ - Normalize even-numbered fenced code block delimiters to odd backticks so include syntax inside fenced code blocks (e.g. ````...````) is never processed; only fence delimiters at line start are normalized, not backticks inside code block content.
140
+
141
+ ## [0.1.61] - 2026-01-28
142
+
143
+ ### Fixed
144
+
145
+ - Preserve literal include syntax inside backticked code spans so examples like `<<[path/file]` render correctly in HTML without being processed.
146
+
147
+ ## [0.1.60] - 2026-01-28
148
+
149
+ ### Changed
150
+
151
+ - Convert images with alt or title text to <figure> and <figcaption> in supported modes while leaving plain images unchanged.
152
+
153
+ ### New
154
+
155
+ - Add --[no-]image-captions CLI flag to control automatic figure and figcaption wrapping of images.
156
+ - Enable automatic image captions by default in MultiMarkdown and Unified modes, configurable per document via metadata.
157
+
158
+ ### Improved
159
+
160
+ - Add regression tests covering image caption behavior across modes and configuration combinations.
161
+
162
+ ### Fixed
163
+
164
+ - Prevent image titles and other inline image attributes from bleeding onto different images when parsing and rendering image attributes.
165
+
166
+ ## [0.1.59] - 2026-01-27
167
+
168
+ ### Changed
169
+
170
+ - Show plugin metadata (id, title, author, description, homepage) in a stable order grouped under a single Installed Plugins section when using --list-plugins
171
+
172
+ ### New
173
+
174
+ - --wikilink-sanitize to sanitize the wiki links
175
+ - Add comprehensive --wikilink-sanitize documentation to Command-Line-Options.md wiki page
176
+ - Support ++insert++ syntax that renders to <ins> and supports IAL attributes for ids and classes on inserted spans
177
+ - Discover project plugins from .apex directories in the current directory, base directory, and git repository root in addition to global config
178
+ - List installed plugins from project and global .apex/plugins roots in the CLI, following the same precedence rules as runtime plugin loading so users can see exactly which plugins are active for a given project
179
+
180
+ ### Improved
181
+
182
+ - Highlight detection logic now properly validates both opening and closing == markers with stricter requirements
183
+ - Allow project plugins to shadow global plugins with the same id so projects can locally override or disable user-global plugins
184
+ - Add APEX_SUPPRESS_HIGHLIGHT_WARNINGS environment variable to suppress noisy missing-syntax-highlighter warnings when running in controlled environments
185
+ - Read configuration from project .apex/config.yml (with global config as a fallback) so per-project defaults override user-wide settings while keeping existing metadata and CLI precedence intact
186
+
187
+ ### Fixed
188
+
189
+ - Highlight conversion now correctly rejects === (three equals) and only matches == (exactly two equals) for mark tags
190
+ - Highlight conversion no longer matches when preceded by = or + characters
191
+ - Highlight conversion no longer matches when followed by + character
192
+ - Highlight conversion no longer matches when closing == is preceded by space or followed by = or +
193
+ - Honor MultiMarkdown-style image attributes on reference-style images in unified and MultiMarkdown modes so definitions like [id]: path \"Title\" class=center width=300 height=200 style=\"...\" correctly apply class, width, height, and style
194
+ - Honor MultiMarkdown-style image attributes on inline and reference-style images in unified and MultiMarkdown modes so syntax like ![alt](/img.jpg \"Title\" class=center width=300 height=200 style=\"...\") or [id]: /img.jpg \"Title\" class=center width=300 height=200 style=\"...\" correctly applies class, width, height, and style to the rendered img tag
195
+ - Preserve MMD6-style image titles in parentheses like ![Image](image.png (Parentheses title)) so they render a proper title attribute instead of leaving a stray closing parenthesis in the output
196
+
197
+ ## [0.1.58] - 2026-01-15
198
+
199
+ ### Fixed
200
+
201
+ - Missing test files
202
+
203
+ ## [0.1.57] - 2026-01-15
204
+
205
+ ### New
206
+
207
+ - Definition lists now support blank lines between the term and first definition, and between multiple definitions. Terms are preserved across blank lines and definition lists remain open across blank lines instead of closing prematurely.
208
+
209
+ ### Improved
210
+
211
+ - Expanded test coverage
212
+
213
+ ### Fixed
214
+
215
+ - Definition lists with blank lines between definitions no longer create separate <dl> blocks - all definitions for a term are now grouped in a single definition list.
216
+ - Terms with blank lines before their definitions are now correctly converted to <dt> tags instead of being rendered as paragraphs.
217
+
218
+ ## [0.1.56] - 2026-01-14
219
+
220
+ ### New
221
+
222
+ - Add test_marked_integration.c test file for Marked integration features
223
+
224
+ ## [0.1.55] - 2026-01-14
225
+
226
+ ### New
227
+
228
+ - Add test_marked_integration.c test file for Marked integration features
229
+
230
+ ## [0.1.54] - 2026-01-14
231
+
232
+ ### New
233
+
234
+ - --highlight-language-only flag to only highlight code blocks that have a language specified (via ```language or IAL), leaving plain code blocks unhighlighted
235
+ - Config file support for code-highlight option (accepts pygments, skylighting, or abbreviations p/pyg, s/sky)
236
+ - Config file support for code-line-numbers option (boolean)
237
+ - Config file support for highlight-language-only option (boolean)
238
+ - Display 256-color ANSI art logo alongside version info when running `apex --version` in a wide terminal (>=70 columns)
239
+
240
+ ### Improved
241
+
242
+ - Version output detects terminal capabilities and falls back gracefully (narrow terminal, piped output, NO_COLOR set)
243
+ - Logo uses transparent background, blending with user's terminal colors instead of forcing black rectangle
244
+
245
+ ### Fixed
246
+
247
+ - Blank line above ASCII art in --version output
248
+
249
+ ## [0.1.53] - 2026-01-13
250
+
251
+ ### New
252
+
253
+ - Display ASCII art logo alongside version info when running `apex --version` in a wide enough terminal (>=80 columns)
254
+ - --code-highlight TOOL flag for syntax highlighting via external tools (pygments, skylighting, or abbreviations p, s)
255
+ - --code-line-numbers flag to include line numbers in syntax-highlighted code blocks (requires --code-highlight)
256
+ - --css flag now accepts multiple stylesheets via repeated flags or comma-separated list (e.g., --css style.css --css syntax.css or --css style.css,syntax.css)
257
+ - Automatic GitHub-style syntax highlighting CSS embedded when --code-highlight is used (covers both Pygments and Skylighting class names)
258
+ - Add test runner `--badge` mode that outputs pass/fail count (e.g., "981/981") for badge generation
259
+
260
+ ### Improved
261
+
262
+ - Version output automatically detects terminal capabilities and falls back to text-only when logo cannot display (narrow terminal, piped output, NO_COLOR set)
263
+ - --embed-css now embeds all specified stylesheets as inline <style> blocks
264
+ - Test output in errors-only mode (`-e`) now only prints suite titles for suites with failures
265
+
266
+ ## [0.1.52] - 2026-01-11
267
+
268
+ ### Changed
269
+
270
+ - Per-cell alignment is now enabled by default only in unified mode, disabled in all other modes (CommonMark, GFM, MultiMarkdown, Kramdown)
271
+
272
+ ### New
273
+
274
+ - Table preprocessing converts consecutive pipes without whitespace (|||) to << markers for colspan detection, distinguishing between whitespace-separated empty cells (| | |) which remain separate and consecutive pipes (|||) which create colspans.
275
+ - Table cells can now specify alignment by adding colons at the start and/or end of cell content: leading colon (:) for left-align, trailing colon (:) for right-align, or both (:content:) for center-align. The colons are stripped from the output and replaced with style="text-align: ..." attributes.
276
+ - Added --per-cell-alignment and --no-per-cell-alignment CLI flags to enable or disable per-cell alignment markers in tables
277
+ - Added tests to verify colspan behavior with consecutive pipes vs empty cells with whitespace
278
+
279
+ ### Improved
280
+
281
+ - Colspan attribute injection in HTML post-processing now includes fallback matching that checks nearby rows when position-based matching fails, ensuring colspan attributes are applied correctly even when row indices shift due to removed cells.
282
+ - HTML post-processing now removes cells containing &lt;&lt; markers (entity-encoded <<) that were missed by AST-level removal.
283
+ - Cell text extraction for attribute matching now recursively checks nested text nodes (paragraphs, etc.) to properly match cells with complex content structures.
284
+ - Colspan merge logic now preserves cell alignment styles when cells are merged together, ensuring alignment attributes are maintained correctly when cells span multiple columns.
285
+ - Per-cell alignment processing is now conditional and only runs when the feature is enabled, improving performance when disabled
286
+ - Row-header detection in tables now correctly identifies empty first header cells
287
+
288
+ ### Fixed
289
+
290
+ - Colspan detection now only triggers on cells with << markers (from consecutive pipes), not plain empty cells, so whitespace-separated pipes create separate empty cells as intended.
291
+ - Cells with << markers now always merge with previous cell to create colspan, even when followed by additional content in subsequent cells.
292
+ - Colspan now only merges consecutive empty cells (|||), not empty cells with whitespace between pipes (| |)
293
+ - Email autolinking no longer converts @ symbols in URLs to email addresses (e.g., Mastodon profile links like https://hachyderm.io/@ttscoff)
294
+ - Email autolinking now requires that the @ symbol is preceded by an alphanumeric character (not space or punctuation)
295
+ - Email autolinking now requires a TLD (top-level domain) to match, so only [user]@[domain].[tld] format is autolinked
296
+ - Email autolinking is now skipped inside markdown link URLs [text](url) to prevent incorrect conversions
297
+ - Row-header tables (tables with empty first header cell) now correctly convert first-column body cells to `<th scope="row">` even when `relaxed_tables` is disabled
298
+
299
+ ## [0.1.51] - 2026-01-09
300
+
301
+ ### New
302
+
303
+ - Support for : Caption syntax before tables, with or without IAL attributes
304
+ - Caption format now works before tables (previously only worked after tables)
305
+ - Added tests for : Caption before tables (basic, with IAL, without blank line)
306
+ - Add regression test to ensure table parsing works correctly when files don't end with a newline, preventing future regressions
307
+ - Add regression test to ensure table parsing works correctly when files use CR line endings, preventing future regressions with Table: Caption syntax
308
+
309
+ ### Improved
310
+
311
+ - Definition list processor now skips : Caption lines that are followed by tables to avoid conflicts
312
+ - Table caption detection now handles blank lines between captions and tables
313
+ - Paragraph removal logic now recognizes and removes : Caption format paragraphs from output
314
+ - Refactored test suite to use centralized test_result() and test_resultf() helper functions instead of scattered printf statements with manual errors_only_output checks
315
+
316
+ ### Fixed
317
+
318
+ - Buffer overflow in stdin reading that caused segfaults when piping from pbpaste
319
+ - Prevent memory leak in is_table_caption by only storing full_text in user_data when caption is confirmed, not before validation
320
+ - Fix potential crash when processing multiple tables by ensuring full_text is properly freed when caption validation fails
321
+ - Fix double-free in add_table_caption by checking for existing caption before freeing user_data, preventing use-after-free errors
322
+ - Fix : Caption lines before tables being incorrectly parsed as definition lists by always treating them as captions when followed by a table, regardless of IAL presence or blank lines
323
+ - Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before preprocessing and parsing
324
+ - Normalization breaking file includes
325
+ - Fix table parsing issue where last row of first table is not parsed when file doesn't end with a newline by normalizing input to always end with a line ending character before table preprocessing and final parsing
326
+ - Fix Table: Caption syntax not being processed when file uses CR line endings by updating table caption preprocessing to handle CR, LF, and CRLF line endings correctly
327
+ - --errors-only flag now correctly suppresses all passing test output, including negative tests that pass
328
+
329
+ ## [0.1.50] - 2026-01-04
330
+
331
+ ### Changed
332
+
333
+ - Removed rouge_css function from documentation generators (generate_docset.rb, generate_single_html.rb, generate_app_docs.rb) in favor of using the shared stylesheet approach.
334
+
335
+ ### New
336
+
337
+ - Added generate_docset.rb script to generate Dash docsets from Apex documentation
338
+ - Added support for single-page CLI options docset using mmd2cheatset
339
+ - Added support for multi-page docset from wiki files with full navigation
340
+ - Added shared_styles.css with common styling for all documentation generators
341
+ - Added shared_scripts.js with hamburger menu functionality for mobile navigation
342
+ - Added hamburger menu button for mobile navigation that slides sidebar in from left
343
+ - Added mobile menu overlay that closes sidebar when clicked
344
+
345
+ ### Improved
346
+
347
+ - Documentation generators now use shared CSS and JavaScript files for consistency
348
+ - Sidebar width increased to 180-250px on larger screens to prevent menu item wrapping
349
+ - Hamburger menu fades to 0.2 opacity when not hovered, full opacity on hover
350
+ - Hamburger menu repositions to right of sidebar when menu is open
351
+ - Hash handling on page load now supports both page IDs and section IDs
352
+ - Added hashchange event listener to handle URL hash changes after page load
353
+ - Moved Rouge syntax highlighting CSS to shared stylesheet (shared_styles.css) for better maintainability. All documentation generators now use the centralized GitHub theme CSS instead of generating it dynamically.
354
+ - Documentation generators now prioritize build/apex over build-release/apex when searching for the Apex binary, ensuring the most recently built version is used for documentation generation.
355
+
356
+ ### Fixed
357
+
358
+ - TOC link navigation now uses getAbsoluteTop function for reliable scroll positioning
359
+ - Hash navigation in single-page HTML files now correctly shows page and scrolls to section
360
+ - TOC links in C API and other pages now scroll correctly instead of only moving 5px
361
+ - Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and skips processing when inside a code block, preserving the literal markdown syntax in code examples.
362
+ - Definition lists are no longer incorrectly processed inside fenced code blocks. The definition list preprocessor now detects code block boundaries and distinguishes between closing fences (```) and opening fences (```markdown). When inside a code block, only closing fences exit the block, while opening fences with language identifiers are treated as content, preventing definition list syntax from being rendered as HTML in code examples.
363
+ - Fixed double-free memory error in definition list preprocessor by setting ref_definitions to NULL after freeing and adding NULL checks in error paths to prevent attempting to free already-freed memory.
364
+
365
+ ## [0.1.49] - 2026-01-03
366
+
367
+ ### New
368
+
369
+ - Added standalone HTML document generation method with stylesheet and title support
370
+ - Added pretty-printing option method for formatted HTML output
371
+ - Added dictionary-based options method for flexible configuration
372
+ - Added Swift-friendly convenience method combining common options (generateHeaderIDs, hardBreaks, pretty)
373
+ - Added instance methods (apexHTML and apexHTMLWithMode) for fluent NSString usage
374
+ - Added Swift API wrapper (Apex.swift) with type-safe ApexMode enum and ApexOptions struct
375
+ - Added String extensions providing idiomatic Swift API for Markdown conversion
376
+ - Added static Apex converter struct for functional-style Swift usage
377
+ - Swift Package Manager (SPM) support - Apex can now be added as a package dependency in Xcode projects via SPM
378
+ - IOS support - Apex now supports iOS 11+ in addition to macOS 10.13+ through bundled libyaml dependency
379
+ - Module map for Swift C API imports - Added module.modulemap to enable direct C API access from Swift
380
+ - Add Package.swift for Swift Package Manager integration
381
+ - Add module.modulemap for Swift/Objective-C interop
382
+ - Add SPM test script and test project
383
+
384
+ ### Improved
385
+
386
+ - Framework build now includes module map for proper Swift module support
387
+ - Add default initializer to ApexOptions struct for better Swift ergonomics
388
+
389
+ ### Fixed
390
+
391
+ - Swift/Objective-C bridging issues in Apex.swift to work correctly with SPM module structure
392
+ - Fix node type declarations to use enum values instead of extern variables for better module compatibility
393
+
394
+ ## [0.1.48] - 2026-01-03
395
+
396
+ ### Fixed
397
+
398
+ - Linux build error: add missing stdint.h include to emoji.c for SIZE_MAX definition
399
+
400
+ ## [0.1.47] - 2026-01-03
401
+
402
+ ### Changed
403
+
404
+ - Updated Objective-C API to use mode constants instead of string literals in default implementation
405
+
406
+ ### New
407
+
408
+ - Added emoji autocorrect option to enable automatic conversion of emoji names like :rocket: to Unicode emoji characters
409
+ - Added progress indicator option to show processing progress on stderr for operations longer than 1 second
410
+
411
+ ### Improved
412
+
413
+ - Added mode constants (ApexModeCommonmark, ApexModeGFM, etc.) to Objective-C API for better type safety and code clarity
414
+
415
+ ## [0.1.46] - 2026-01-03
416
+
417
+ ## [0.1.45] - 2026-01-03
418
+
419
+ ### Improved
420
+
421
+ - Table caption preprocessing now handles blank lines between tables and captions by buffering and discarding them appropriately
422
+ - Table matching in HTML renderer now uses sequential matching instead of index-based matching to correctly handle tables with attributes
423
+ - Caption detection now concatenates all text nodes in a paragraph to ensure IAL attributes are found even when split across nodes
424
+
425
+ ### Fixed
426
+
427
+ - Table captions now work correctly when separated from tables by blank lines
428
+ - IAL attributes (id, class) are now correctly extracted and applied to tables with captions
429
+ - Table: caption format now works when appearing immediately after table rows without blank lines
430
+ - Table: caption format now supports case-insensitive "table:" in addition to "Table:"
431
+
432
+ ## [0.1.44] - 2026-01-02
433
+
434
+ ### Changed
435
+
436
+ - Updated emoji_entry structure to support both unicode and image-based emojis with separate unicode and image_url fields
437
+ - Table alignment test now accepts both align="center" and style="text-align: center" attributes to be more flexible with cmark-gfm's output format
438
+
439
+ ### New
440
+
441
+ - Fenced divs now support specifying different HTML block elements using >blocktype syntax (e.g., ::: >aside {.sidebar} creates <aside> instead of <div>)
442
+ - Support for common HTML5 block elements: aside, article, section, details, summary, header, footer, nav, and custom elements
443
+ - Block type syntax works with all attribute types including IDs, classes, and custom attributes
444
+ - Added comprehensive test coverage for block type feature including nesting, multiple attributes, and edge cases
445
+ - In GFM format, emojis in headers are converted to their textual names in generated IDs (e.g., # Support -> id="smile-support"), matching Pandoc's GFM behavior
446
+ - Added support for all 861 GitHub emojis (expanded from ~200), including 14 image-based emojis like :bowtie:, :octocat:, and :feelsgood:
447
+ - Added emoji name autocorrect feature using fuzzy matching with Levenshtein distance algorithm to correct typos and formatting errors in emoji names
448
+ - Added --emoji-autocorrect and --no-emoji-autocorrect command-line flags to control emoji autocorrection
449
+ - Emoji autocorrect is enabled by default in unified mode and can be enabled in GFM mode
450
+ - Image-based emojis in headers now use em units (height: 1em) for proper scaling instead of fixed pixel sizes
451
+
452
+ ### Improved
453
+
454
+ - Fenced div block types can be nested and mixed with regular divs
455
+ - Emoji processing now validates that only complete :emoji_name: patterns are processed (requires at least one character and no spaces between colons)
456
+ - Emoji names are normalized (lowercase, hyphens to underscores) before matching to handle case variations and formatting differences
457
+ - Table processing now completes in under 30ms for large tables (previously timing out after 5+ seconds) by avoiding expensive string comparisons when no changes are made
458
+ - Added early exit in table attribute injection to skip processing for simple tables without special attributes, avoiding expensive AST traversal for tables that don't need it
459
+ - Table post-processing performance significantly improved for large tables (2600+ cells) by implementing lazy cell content extraction, only extracting content when needed for attribute matching or alignment processing
460
+ - Added timeout protection (10 seconds) to table post-processing loop to prevent hangs on extremely large tables, gracefully exiting and returning processed HTML
461
+ - Per-cell alignment processing now disabled automatically for tables with more than 1000 cells to avoid timeouts, while column alignment from delimiter rows continues to work (handled by cmark-gfm)
462
+ - Optimized alignment colon detection to only check first and last non-whitespace characters instead of scanning entire cell content, reducing character comparisons by ~50x
463
+ - Added early exit for tables with only simple attributes (no rowspan/colspan/data-remove) to skip expensive HTML processing when no complex features are needed
464
+ - Content-based cell matching now skipped for tables with more than 500 attributes to avoid performance degradation
465
+ - Added CMARK_OPT_LIBERAL_HTML_TAG option when unsafe mode is enabled to allow cmark-gfm to properly recognize inline HTML tags instead of encoding them
466
+ - MacOS binaries now use @rpath for libyaml instead of hardcoded Homebrew paths, allowing the binary to work when copied to /usr/local/bin as long as libyaml is installed in /usr/local/lib or /opt/homebrew/lib
467
+ - Emoji name resolution now prefers longer, more descriptive names (e.g., "thumbsup" over "+1")
468
+ - Header ID generation now normalizes common Latin diacritics (e, a, c, etc.)
469
+ - Table rowspan matching now extracts cell content for more accurate matching
470
+
471
+ ### Fixed
472
+
473
+ - Fixed issue where partial emoji patterns or empty patterns could cause incorrect matches
474
+ - Emoji replacement now correctly ignores table alignment patterns like :---: and :|: to prevent incorrect emoji processing in table delimiter rows
475
+ - Emoji patterns (like :bowtie:) inside HTML tag attributes are now correctly ignored and not processed, preventing mangled HTML output when emojis appear in attributes like title=":emoji:"
476
+ - Autolink processing now skips URLs inside HTML tag attributes, preventing URLs in attributes like src="https://..." from being converted to markdown links
477
+ - Inline HTML tags like <img> are no longer HTML-encoded when --unsafe is enabled, preserving raw HTML in paragraphs, blockquotes, and definition lists
478
+ - Header IDs with emojis now correctly replace cmark-gfm's auto-generated IDs instead of being skipped, ensuring custom ID formats (like emoji-to-name conversion) are applied
479
+ - Emoji processing now correctly skips index placeholders (<!--IDX:...-->)
480
+ - Table processing now correctly detects and processes rowspan markers (^^)
481
+ - Table attribute processing optimization no longer incorrectly skips rowspan/colspan attributes
482
+ - Table formatting in fixture
483
+ - Remove unused function
484
+
485
+ ## [0.1.43] - 2025-12-31
486
+
487
+ ### Changed
488
+
489
+ - Reference image attribute expansion now converts IAL
490
+
491
+ attributes (ID, classes) to key=value format for
492
+ compatibility with inline image parsing
493
+
494
+ - Test suite refactored: split test_runner.c into multiple
495
+
496
+ files (test_basic.c, test_extensions.c, test_helpers.c,
497
+ test_ial.c, test_links.c, test_metadata.c, test_output.c,
498
+ test_tables.c) for better organization
499
+
500
+ - Test fixtures reorganized: moved all .md test files from
501
+
502
+ tests/ to tests/fixtures/ with subdirectories (basic/,
503
+ demos/, extensions/, ial/, images/, output/, tables/)
504
+
505
+ ### New
506
+
507
+ Support for Pandoc-style table captions using `: Caption` syntax (in addition to existing `[Caption]` and `Table: Caption` formats)
508
+
509
+ IAL attributes in table captions are now extracted and applied to the table element (e.g., `: Caption {#id .class}` applies `id` and `class` to the table)
510
+
511
+ Support for Pandoc-style IAL syntax without colon prefix (`{#id .class}` in addition to Kramdown `{:#id .class}` format)
512
+
513
+ - Support Pandoc-style IAL syntax ({#id .class}) in addition
514
+
515
+ to Kramdown-style ({: #id .class}) for all IAL contexts
516
+ including block-level, inline, and paragraph IALs
517
+
518
+ - Extract_ial_from_text function now recognizes both {: and
519
+
520
+ {# or {. formats when extracting IALs from text
521
+
522
+ - Extract_ial_from_paragraph function now accepts
523
+
524
+ Pandoc-style IALs for pure IAL paragraphs
525
+
526
+ - Process_span_ial_in_container function now processes
527
+
528
+ Pandoc-style IALs for inline elements like links, images,
529
+ and emphasis
530
+
531
+ - Is_ial_line function now detects Pandoc-style IAL-only
532
+
533
+ lines in addition to Kramdown format
534
+
535
+ - Support Pandoc-style IAL syntax ({#id .class}) in addition
536
+
537
+ to Kramdown-style ({: #id .class}) for all IAL contexts
538
+ including block-level elements, paragraphs, inline
539
+ elements, and headings
540
+
541
+ - Add support for Pandoc fenced divs syntax (::::: {#id
542
+
543
+ .class} ... :::::) in unified mode, enabled by default
544
+
545
+ - Add --divs and --no-divs command-line flags to control
546
+
547
+ fenced divs processing
548
+
549
+ - Add comprehensive test suite for Pandoc fenced divs
550
+
551
+ covering basic divs, nested divs, attributes, and edge
552
+ cases
553
+
554
+ - Add bracketed spans feature that converts [text]{IAL}
555
+
556
+ syntax to HTML span elements with attributes, enabled by
557
+ default in unified mode
558
+
559
+ - Add --spans and --no-spans command-line flags to
560
+
561
+ enable/disable bracketed spans in other modes
562
+
563
+ - Bracketed spans support all IAL attribute types (IDs,
564
+
565
+ classes, key-value pairs) and process markdown inside
566
+ spans
567
+
568
+ - Reference link definitions take precedence over bracketed
569
+
570
+ spans - if [text] matches a reference link, it remains a
571
+ link
572
+
573
+ - Add comprehensive test suite for bracketed spans including
574
+
575
+ reference link precedence, nested brackets, and markdown
576
+ processing
577
+
578
+ - Add bracketed spans examples and documentation
579
+ - Add automatic width/height attribute conversion:
580
+
581
+ percentages and non-integer/non-px values convert to style
582
+ attributes, Xpx values convert to integer width/height
583
+ attributes (strips px suffix), bare integers remain as
584
+ width/height attributes
585
+
586
+ - Add support for Pandoc/Kramdown IAL syntax on images:
587
+
588
+ inline images support IAL after closing paren like
589
+ ![alt](url){#id .class width=50%}
590
+
591
+ - Add support for IAL syntax after titles in reference image
592
+
593
+ definitions: [ref]: url "title" {#id .class width=50%}
594
+
595
+ - Add support for Pandoc-style IAL with space prefix: {
596
+
597
+ width=50% } syntax works for images
598
+
599
+ - Add comprehensive test suite for width/height conversion
600
+
601
+ covering percentages, pixels, integers, mixed cases, and
602
+ edge cases like decimals and viewport units
603
+
604
+ - Reference image definitions now preserve and include title
605
+
606
+ attributes from definitions like [ref]: url "title" {#id}
607
+
608
+ ### Improved
609
+
610
+ - Table caption preprocessing now converts `: Caption`
611
+
612
+ format to `[Caption]` format before definition list
613
+ processing to avoid conflicts
614
+
615
+ - HTML renderer now extracts and injects IAL attributes from
616
+
617
+ table captions while excluding internal attributes like
618
+ `data-caption`
619
+
620
+ - IAL parsing automatically detects format and adjusts
621
+
622
+ content offset accordingly (2 chars for {: format, 1 char
623
+ for {# or {. format)
624
+
625
+ - HTML markdown extension now uses CMARK_OPT_UNSAFE to allow
626
+
627
+ raw HTML including nested divs in processed content
628
+
629
+ - Width/height conversion properly merges with existing
630
+
631
+ style attributes when both are present
632
+
633
+ - IAL detection now properly handles whitespace before IAL
634
+
635
+ syntax for both inline and reference images
636
+
637
+ - Reference image expansion now correctly skips IAL even
638
+
639
+ when closing paren is not found
640
+
641
+ ### Fixed
642
+
643
+ - Table caption test assertions now correctly match table
644
+
645
+ tags with attributes by using <table instead of <table>
646
+
647
+ - Extract_ial_from_paragraph now allows newline character
648
+
649
+ after closing brace in IAL syntax
650
+
651
+ - List items with key:value format (e.g., "- Foo: Bar") are
652
+
653
+ no longer incorrectly parsed as MMD metadata in unified
654
+ mode
655
+
656
+ - Fenced divs now add markdown="1" attribute so content
657
+
658
+ inside divs is properly parsed as markdown
659
+
660
+ - HTML markdown extension now preserves all attributes (id,
661
+
662
+ class, custom attributes) when processing divs with
663
+ markdown="1"
664
+
665
+ - HTML markdown extension now recursively processes nested
666
+
667
+ divs with markdown="1" attributes
668
+
669
+ - HTML markdown extension now adds newline after closing div
670
+
671
+ tags to ensure following markdown headers and content are
672
+ parsed correctly
673
+
674
+ - Bracketed spans now correctly handle nested brackets by
675
+
676
+ matching outer brackets instead of first closing bracket
677
+
678
+ - Remove test assertions checking for markdown attribute on
679
+
680
+ bracketed spans which is correctly removed by
681
+ html_markdown extension
682
+
683
+ - IAL syntax with spaces (e.g., { width=50% }) now correctly
684
+
685
+ detected and processed for images
686
+
687
+ - IAL syntax is now properly stripped from output even when
688
+
689
+ parsing fails, preventing raw IAL from appearing in HTML
690
+
691
+ - Reference image definitions with IAL after URL (no title)
692
+
693
+ now correctly detected and processed
694
+
695
+ - Test string length issues: replaced hardcoded lengths with
696
+
697
+ strlen() calls to ensure full IAL syntax is processed in
698
+ width/height conversion tests
699
+
700
+ - Removed unused style_attr_index variable to eliminate
701
+
702
+ compiler warning
703
+
704
+ ## [0.1.42] - 2025-12-30
705
+
706
+ ### New
707
+
708
+ - ALD references can now be combined with additional
709
+
710
+ attributes in the same IAL (e.g., {:id .class3} where id
711
+ is an ALD reference and .class3 is an additional class)
712
+
713
+ ### Improved
714
+
715
+ - When merging ALD attributes with additional attributes,
716
+
717
+ duplicate key-value pairs are now replaced instead of
718
+ duplicated (e.g., if ALD defines rel="x" and IAL includes
719
+ rel="y", the result is rel="y")
720
+
721
+ - Classes from additional attributes are appended to ALD
722
+
723
+ classes, and IDs in IALs override ALD IDs when specified
724
+
725
+ - Enhanced merge_attributes function to properly handle
726
+
727
+ attribute key conflicts by replacing existing values
728
+ rather than creating duplicates
729
+
730
+ ## [0.1.41] - 2025-12-30
731
+
732
+ ### New
733
+
734
+ - Inline Attribute Lists (IALs) can now appear immediately
735
+
736
+ after inline elements within paragraphs, not just at the
737
+ end of paragraphs
738
+
739
+ - IALs can be applied to strong (bold), emphasis (italic),
740
+
741
+ and code elements in addition to links and images
742
+
743
+ - IALs now work with nested inline elements, allowing
744
+
745
+ attributes to be applied to italic text inside bold text
746
+ and similar nested structures
747
+
748
+ - Added comprehensive test suite for inline IAL
749
+
750
+ functionality covering links, strong, emphasis, code,
751
+ multiple IALs, and edge cases
752
+
753
+ - Added IAL demo markdown file (tests/ial_demo.md)
754
+
755
+ demonstrating all supported IAL features
756
+
757
+ - Added script (tests/generate_ial_demo.sh) to automatically
758
+
759
+ generate an HTML file with interactive attribute
760
+ inspection tooltips
761
+
762
+ ### Fixed
763
+
764
+ - IALs (Inline Attribute Lists) are now correctly applied to
765
+
766
+ the intended link element when multiple links in a
767
+ document share the same URL
768
+
769
+ - IALs are now correctly applied to the intended element
770
+
771
+ when multiple elements share the same URL or content,
772
+ using separate element counters for each inline element
773
+ type
774
+
775
+ - Block-level HTML elements now correctly include a space
776
+
777
+ between the tag name and attributes when IAL attributes
778
+ are injected
779
+
780
+ ## [0.1.40] - 2025-12-23
781
+
782
+ ### Changed
783
+
784
+ - Table captions now default to below the table instead of
785
+
786
+ above
787
+
788
+ - Tfoot row detection in AST now separates the logic for
789
+
790
+ marking the === row itself versus rows that come after it,
791
+ improving accuracy of tfoot section identification.
792
+
793
+ - Disallow using --combine and --mmd-merge together to avoid
794
+
795
+ ambiguous multi-file behavior
796
+
797
+ - Update CSV include and inline table handling so both share
798
+
799
+ the same CSV-to-table conversion and alignment behavior
800
+
801
+ ### New
802
+
803
+ - Added --captions option to control caption position (above
804
+
805
+ or below)
806
+
807
+ - Added default CSS styling for figcaption elements in
808
+
809
+ standalone output (centered, bold, 0.8em)
810
+
811
+ - Added CSS styling for table figures to align captions with
812
+
813
+ tables (fit-content width)
814
+
815
+ - Support for tables that start with alignment rows
816
+
817
+ (separator rows) without header rows. Column alignment
818
+ specified in the separator row is automatically applied to
819
+ all data columns.
820
+
821
+ - Support for individual cell alignment in tables using
822
+
823
+ colons, similar to Jekyll Spaceship. Cells can be aligned
824
+ independently with :Text (left), Text: (right), or :Text:
825
+ (center). Colons are removed from output and alignment is
826
+ applied via CSS text-align styles.
827
+
828
+ - Support per-cell alignment markers inside table cells
829
+ - Support multiline table cells using trailing backslash
830
+
831
+ markers
832
+
833
+ - Support header and footer colspans based on empty cells
834
+ - Add --combine CLI mode to concatenate Markdown files with
835
+
836
+ include expansion and GitBook-style SUMMARY.md index
837
+ support.
838
+
839
+ - Add --mmd-merge CLI mode to merge MultiMarkdown index
840
+
841
+ files into a single Markdown stream
842
+
843
+ - Support indentation-based header level shifting when
844
+
845
+ merging mmd_merge index entries
846
+
847
+ - Support inline CSV/TSV tables using ```table fenced blocks
848
+
849
+ with automatic CSV/TSV delimiter detection
850
+
851
+ - Support <!--TABLE--> markers that convert following
852
+
853
+ CSV/TSV lines into Markdown tables until a blank line
854
+
855
+ - Add --aria command-line option to enable ARIA labels and
856
+
857
+ accessibility attributes in HTML output
858
+
859
+ - Add aria-label="Table of contents" to TOC navigation
860
+
861
+ elements when --aria is enabled
862
+
863
+ Add role="figure" to figure elements when --aria is enabled
864
+
865
+ - Add role="table" to table elements when --aria is enabled
866
+ - Generate id attributes for figcaption elements in table
867
+
868
+ figures when --aria is enabled
869
+
870
+ - Add aria-describedby attributes linking tables to their
871
+
872
+ captions when --aria is enabled
873
+
874
+ ### Improved
875
+
876
+ - Removed unused variables to eliminate compiler warnings
877
+ - Empty thead sections from headerless tables are now
878
+
879
+ removed from HTML output instead of rendering empty header
880
+ cells.
881
+
882
+ - Table row mapping now better handles the relationship
883
+
884
+ between HTML row indices and AST row indices, accounting
885
+ for separator rows that are removed from HTML output.
886
+
887
+ - Added safeguards to prevent rows that should be in tbody
888
+
889
+ from being skipped, including protection for the first few
890
+ rows (header and first two data rows) when a === separator
891
+ is present.
892
+
893
+ - Make table captions positionable above or below tables
894
+ - Center and style figcaptions in standalone HTML output
895
+ - Support optional alignment keyword rows (left, right,
896
+
897
+ center, auto) and headless tables for both included CSV
898
+ files and inline CSV/TSV data
899
+
900
+ - Preserve ```table fences without commas or tabs by leaving
901
+
902
+ them as code blocks so users can show literal CSV/TSV
903
+ without conversion
904
+
905
+ ### Fixed
906
+
907
+ - Removed unused variable 'row_idx' from advanced_tables.c
908
+
909
+ to eliminate compiler warnings.
910
+
911
+ - Rows before the === separator are now correctly placed in
912
+
913
+ tbody instead of being incorrectly placed in tfoot or
914
+ skipped entirely. The fix includes HTML position
915
+ verification to ensure rows that appear before the === row
916
+ in the rendered HTML are always in tbody, regardless of
917
+ AST marking.
918
+
919
+ - Prevent === separator rows from appearing as table content
920
+
921
+ Ensure footer rows render in tfoot without losing body rows
922
+
923
+ - Preserve legitimate empty cells such as missing Q4 values
924
+ - Apply ^^ rowspans correctly for all table sections
925
+ - Apply ^^ rowspans correctly across table sections without
926
+
927
+ leaking into unrelated rows
928
+
929
+ - Support footer colspans so footer cells can span multiple
930
+
931
+ columns like headers and body rows
932
+
933
+ - Preserve legitimate empty table cells that are not part of
934
+
935
+ colspans or rowspans
936
+
937
+ - KaTeX auto-render now properly configures delimiters and
938
+
939
+ manually renders math spans to prevent plain text from
940
+ appearing after rendered equations
941
+
942
+ - Relaxed table header conversion now only runs when
943
+
944
+ relaxed_tables option is enabled
945
+
946
+ - HTML document wrapping now strips existing </body></html>
947
+
948
+ tags to prevent duplicates when content already contains
949
+ them
950
+
951
+ - KaTeX auto-render now properly configures delimiters and
952
+
953
+ manually renders math spans to prevent plain text from
954
+ appearing after rendered equations
955
+
956
+ - Relaxed table header conversion now only runs when
957
+
958
+ relaxed_tables option is enabled
959
+
960
+ - HTML document wrapping now strips existing </body></html>
961
+
962
+ tags to prevent duplicates when content already contains
963
+ them
964
+
965
+ - Table captions appearing after their tables now correctly
966
+
967
+ link via aria-describedby attributes
968
+
969
+ ## [0.1.39] - 2025-12-19
970
+
971
+ ### Changed
972
+
973
+ - Table post-processing now tracks all cells (including
974
+
975
+ removed ones) to correctly map HTML column positions to
976
+ original AST column indices, ensuring attributes are
977
+ applied to the correct cells.
978
+
979
+ - Added content-based detection for ^^ marker cells during
980
+
981
+ HTML post-processing to ensure they are properly removed
982
+ even when attribute matching fails.
983
+
984
+ ### New
985
+
986
+ - Added content verification to prevent false matches when
987
+
988
+ cells are covered by rowspans
989
+
990
+ - Added tracking of previous cell's colspan to detect and
991
+
992
+ remove empty cells after colspan
993
+
994
+ - Added detection and removal of === marker rows in tfoot
995
+
996
+ sections
997
+
998
+ ### Improved
999
+
1000
+ - Rowspan cell tracking now uses a per-column active cell
1001
+
1002
+ approach (inspired by Jekyll Spaceship) for more reliable
1003
+ rowspan calculation across complex table structures.
1004
+
1005
+ - Cell matching now uses position-based fallback to previous
1006
+
1007
+ row when current row match fails
1008
+
1009
+ - Row mapping accounts for rowspan coverage to correctly
1010
+
1011
+ identify visible columns
1012
+
1013
+ - Tfoot row detection now uses AST row indices instead of
1014
+
1015
+ HTML row indices for accuracy
1016
+
1017
+ ### Fixed
1018
+
1019
+ - Table rowspan rendering now correctly handles rows where
1020
+
1021
+ most cells use ^^ markers. Previously, cells like "Beta"
1022
+ and "Gamma" in rows with multiple ^^ cells would be
1023
+ missing or appear in the wrong position. The fix includes
1024
+ proper mapping between HTML row indices and AST row
1025
+ indices, accounting for separator rows that are removed
1026
+ from HTML output.
1027
+
1028
+ - Missing cells after colspan (e.g., "92.00" cell was
1029
+
1030
+ missing when "Absent" had colspan="2")
1031
+
1032
+ - Rowspan not applying correctly when HTML row mapping was
1033
+
1034
+ off by one
1035
+
1036
+ - Footer alignment rows (=== markers) appearing in output
1037
+
1038
+ instead of being removed
1039
+
1040
+ - Empty cells after colspan not being removed from rendered
1041
+
1042
+ HTML
1043
+
1044
+ ## [0.1.38] - 2025-12-18
1045
+
1046
+ ### Changed
1047
+
1048
+ - In standalone mode, insert script tags just before </body>
1049
+ - In snippet mode, append script tags at the end of the HTML
1050
+
1051
+ fragment
1052
+
1053
+ - When --embed-css is used with --css, replace the
1054
+
1055
+ stylesheet <link> tag with an inline <style> block
1056
+ containing the CSS file contents
1057
+
1058
+ ### New
1059
+
1060
+ - Support Pandoc-style "Table: Caption" syntax and
1061
+ - Add --script CLI flag to inject scripts into HTML output
1062
+ - Support shorthands for common JS libraries (mermaid,
1063
+
1064
+ mathjax, katex, highlightjs, prism, htmx, alpine)
1065
+
1066
+ - Add --embed-css option to inline CSS files into the
1067
+
1068
+ standalone document head
1069
+
1070
+ ### Improved
1071
+
1072
+ - Compress extraneous newlines between HTML elements
1073
+ - Remove unused apex_remote_trim helper to eliminate
1074
+
1075
+ compiler warnings
1076
+
1077
+ ### Fixed
1078
+
1079
+ - Prevent caption paragraphs from being reused across
1080
+ - Skip URL encoding for footnote definitions ([^id]: ...) so
1081
+
1082
+ footnote
1083
+
1084
+ ## [0.1.37] - 2025-12-17
1085
+
1086
+ ### Changed
1087
+
1088
+ - Image attributes are mode-dependent: work in Unified and
1089
+
1090
+ MultiMarkdown modes only
1091
+
1092
+ - URL encoding is mode-dependent: works in Unified,
1093
+
1094
+ MultiMarkdown, and Kramdown modes
1095
+
1096
+ - Improved caption detection to check all table rows for
1097
+
1098
+ caption markers, not just the last row, to handle cases
1099
+ where captions come after tfoot rows.
1100
+
1101
+ ### New
1102
+
1103
+ - Support for MultiMarkdown-style image attributes in
1104
+
1105
+ unified and MultiMarkdown modes
1106
+
1107
+ Inline image attributes: ![alt](url width=300 style="float:left" "title")
1108
+
1109
+ - Reference-style image attributes: ![][ref] with [ref]: url
1110
+
1111
+ width=300
1112
+
1113
+ - Automatic URL encoding for links with spaces in unified,
1114
+
1115
+ MultiMarkdown, and Kramdown modes
1116
+
1117
+ - URLs with spaces are automatically percent-encoded (e.g.,
1118
+
1119
+ "path with spaces.png" becomes "path%20with%20spaces.png")
1120
+
1121
+ - Added support for MultiMarkdown-style image attributes in
1122
+
1123
+ reference-style images. Reference definitions can now
1124
+ include attributes: [img1]: image.png width=300
1125
+ style="float:left"
1126
+
1127
+ Added support for inline image attributes: ![alt](url width=300 style="...")
1128
+
1129
+ - Added automatic URL encoding for all link URLs (images and
1130
+
1131
+ regular links). URLs with spaces are automatically
1132
+ percent-encoded (e.g., "path to/image.png" becomes
1133
+ "path%20to/image.png")
1134
+
1135
+ - Added detection and removal of table alignment separator
1136
+
1137
+ rows that were incorrectly being rendered as table rows.
1138
+
1139
+ - Added test cases for table captions appearing before and
1140
+
1141
+ after tables.
1142
+
1143
+ Added support for tfoot sections in tables using `===` row markers. Rows containing `===` markers are now placed in `<tfoot>` sections, and all subsequent rows after the first `===` row are also placed in tfoot.
1144
+
1145
+ - Added comprehensive table feature tests that validate
1146
+
1147
+ rowspan,
1148
+
1149
+ ### Improved
1150
+
1151
+ - Improved attribute injection in HTML renderer to correctly
1152
+
1153
+ place attributes before closing > or /> in img and link
1154
+ tags
1155
+
1156
+ - Enhanced URL parsing to distinguish between spaces within
1157
+
1158
+ URLs vs spaces before attributes using forward-scanning
1159
+ pattern detection
1160
+
1161
+ - Self-closing img tags now consistently use " />" (space
1162
+
1163
+ before slash) when attributes are injected, matching the
1164
+ format used by cmark-gfm for img tags without injected
1165
+ attributes
1166
+
1167
+ - Rowspan and colspan attribute handling now properly
1168
+
1169
+ appends to existing attributes instead of replacing them,
1170
+ allowing multiple attributes to coexist on table cells.
1171
+
1172
+ - Alignment rows (rows containing only '' characters) are
1173
+
1174
+ now detected and marked for removal, preventing them from
1175
+ appearing in HTML output.
1176
+
1177
+ ### Fixed
1178
+
1179
+ - Fixed bug where image prefix "![" was incorrectly removed
1180
+
1181
+ during preprocessing of expanded reference-style images
1182
+
1183
+ - URL encoding now only encodes unsafe characters (space,
1184
+
1185
+ control chars, non-ASCII). Valid URL characters like /, :,
1186
+ ?, #, ~, etc. are preserved and no longer incorrectly
1187
+ encoded.
1188
+
1189
+ - Titles in links and images are now correctly detected and
1190
+
1191
+ excluded from URL encoding. Supports quoted titles
1192
+ ("title", 'title') and parentheses titles ((title)). URLs
1193
+ with parentheses (like Wikipedia links) are correctly
1194
+ distinguished from titles based on whether a space
1195
+ precedes the opening parenthesis.
1196
+
1197
+ - Reference-style images with attributes now render
1198
+
1199
+ correctly. Reference definitions with image attributes are
1200
+ removed from output, while those without attributes are
1201
+ preserved (with URL encoding) so cmark can resolve the
1202
+ references.
1203
+
1204
+ - Spacing between attributes in HTML output. Attributes
1205
+
1206
+ injected into img and link tags now have proper spacing,
1207
+ preventing malformed HTML like alt="text"width="100".
1208
+
1209
+ - Table attributes now render correctly with proper spacing.
1210
+
1211
+ Fixed missing space in table tag when id attribute
1212
+ immediately follows (e.g., <tableid="..." now renders as
1213
+ <table id="...").
1214
+
1215
+ - Rowspan and colspan injection now works correctly in all
1216
+
1217
+ cases. Fixed bug where table tracking variables weren't
1218
+ set when fixing missing space in table tag (e.g.,
1219
+ <tableid="..."), causing row and cell processing to be
1220
+ skipped. Table tracking is now properly initialized even
1221
+ when correcting tag spacing.
1222
+
1223
+ - Captions after tables were not being detected when tables
1224
+
1225
+ had IAL attributes, as IAL processing replaced the caption
1226
+ data stored in user_data. Added fallback logic to check
1227
+ for caption paragraphs directly in the AST when user_data
1228
+ lookup fails.
1229
+
1230
+ - Rows containing only `===` markers are now properly
1231
+
1232
+ skipped entirely rather than rendering as empty cells in
1233
+ tfoot sections.
1234
+
1235
+ - Caption paragraphs before tables are now properly removed,
1236
+
1237
+ ## [0.1.36] - 2025-12-16
1238
+
1239
+ ### Fixed
1240
+
1241
+ - Resolve CMake error when building framework where
1242
+
1243
+ file(GLOB) returns multiple dylib files, causing
1244
+ semicolon-concatenated paths in file(COPY) command. Now
1245
+ extracts first file from glob result before copying.
1246
+
1247
+ - Homebrew installation now correctly links to system
1248
+
1249
+ libyaml instead of hardcoded CI path
1250
+
1251
+ ## [0.1.35] - 2025-12-16
1252
+
1253
+ ### Changed
1254
+
1255
+ - Update Homebrew formula to install from a precompiled
1256
+
1257
+ macOS universal binary instead of building from source
1258
+ with cmake.
1259
+
1260
+ - Allow --install-plugin to accept a Git URL or GitHub
1261
+
1262
+ shorthand (user/repo) in addition to directory IDs when
1263
+ installing plugins.
1264
+
1265
+ ### Improved
1266
+
1267
+ - Simplify Homebrew installation so users no longer need
1268
+
1269
+ cmake or Xcode build tools to install apex.
1270
+
1271
+ - Add an interactive security confirmation when installing
1272
+
1273
+ plugins from a direct Git URL or GitHub repo name,
1274
+ reminding users that plugins execute unverified code.
1275
+
1276
+ ## [0.1.34] - 2025-12-16
1277
+
1278
+ ## [0.1.33] - 2025-12-16
1279
+
1280
+ ## [0.1.32] - 2025-12-16
1281
+
1282
+ ## [0.1.31] - 2025-12-16
1283
+
1284
+ ## [0.1.30] - 2025-12-16
1285
+
1286
+ ### Changed
1287
+
1288
+ - Make --list-plugins show installed plugins before remote
1289
+
1290
+ ones.
1291
+
1292
+ - Prevent remote plugins that are already installed from
1293
+
1294
+ being listed under Available Plugins.
1295
+
1296
+ - Build system now detects libyaml via multiple methods
1297
+
1298
+ (yaml-0.1, yaml, libyaml) for better cross-platform
1299
+ support.
1300
+
1301
+ - Homebrew formula now includes libyaml as a dependency to
1302
+
1303
+ ensure full YAML support.
1304
+
1305
+ - Suppressed unused-parameter warnings from vendored
1306
+
1307
+ cmark-gfm extensions to reduce build noise.
1308
+
1309
+ ### New
1310
+
1311
+ Add --uninstall-plugin CLI flag to remove installed plugins.
1312
+
1313
+ - Run optional post_install command from plugin.yml after
1314
+
1315
+ cloning a plugin.
1316
+
1317
+ - Full YAML parsing support using libyaml for arrays and
1318
+
1319
+ nested structures in metadata and plugin manifests.
1320
+
1321
+ - Plugin bundle support allowing multiple plugins to be
1322
+
1323
+ defined in a single plugin.yml manifest.
1324
+
1325
+ - Expose APEX_FILE_PATH to external plugins so scripts can
1326
+
1327
+ see the original input path or base directory when
1328
+ processing.
1329
+
1330
+ ### Improved
1331
+
1332
+ - Split() metadata transform now accepts regular expressions
1333
+
1334
+ as delimiters (for example split(,\s*)).
1335
+
1336
+ - YAML arrays are automatically normalized to
1337
+
1338
+ comma-separated strings for backward compatibility with
1339
+ existing metadata transforms.
1340
+
1341
+ - External plugin environment now includes the source file
1342
+
1343
+ path (when available) alongside APEX_PLUGIN_DIR and
1344
+ APEX_SUPPORT_DIR.
1345
+
1346
+ ### Fixed
1347
+
1348
+ - Tighten mutual-exclusion checks between install and
1349
+
1350
+ uninstall plugin flags.
1351
+
1352
+ - Ensure CMake policy version is compatible with vendored
1353
+
1354
+ cmark-gfm on newer CMake releases.
1355
+
1356
+ - Install the Apex framework with its public apex.h header
1357
+
1358
+ correctly embedded in Apex.framework/Headers for Xcode
1359
+ use.
1360
+
1361
+ - Bundle libcmark-gfm and libcmark-gfm-extensions dylibs
1362
+
1363
+ into Apex.framework so dependent apps no longer hit
1364
+ missing library errors at runtime.
1365
+
1366
+ ## [0.1.29] - 2025-12-15
1367
+
1368
+ ### Changed
1369
+
1370
+ - Make --list-plugins show installed plugins before remote
1371
+
1372
+ ones.
1373
+
1374
+ - Prevent remote plugins that are already installed from
1375
+
1376
+ being listed under Available Plugins.
1377
+
1378
+ ### New
1379
+
1380
+ - Initial planning for a remote plugin directory and install
1381
+
1382
+ features
1383
+
1384
+ Add --uninstall-plugin CLI flag to remove installed plugins.
1385
+
1386
+ ### Fixed
1387
+
1388
+ - Superscript/subscript no longer process content inside
1389
+
1390
+ Liquid {% %} tags.
1391
+
1392
+ - Autolink detection skips Liquid {% %} tags so emails and
1393
+
1394
+ URLs are not rewritten there.
1395
+
1396
+ - Fix directory url for `--list-plugins`
1397
+
1398
+ ## [0.1.28] - 2025-12-15
1399
+
1400
+ ### Changed
1401
+
1402
+ - Default wikilink URLs now replace spaces with dashes (e.g.
1403
+
1404
+ [[Home Page]] -> href="Home-Page").
1405
+
1406
+ ### New
1407
+
1408
+ - Add --wikilink-space and --wikilink-extension flags to
1409
+
1410
+ control how [[WikiLink]] hrefs are generated.
1411
+
1412
+ - Allow wikilink space and extension configuration via
1413
+
1414
+ metadata keys wikilink-space and wikilink-extension.
1415
+
1416
+ - Support Kramdown-style {:toc ...} markers mapped to Apex
1417
+
1418
+ TOC generation.
1419
+
1420
+ - Add tests for `{:toc}` syntaxes
1421
+ - MMD includes support full glob patterns like {{*.md}} and
1422
+
1423
+ {{c?de.py}}.
1424
+
1425
+ - Add plugin discovery from .apex/plugins and
1426
+
1427
+ ~/.config/apex/plugins.
1428
+
1429
+ - Allow external handler plugins in any language via JSON
1430
+
1431
+ stdin/stdout.
1432
+
1433
+ - Support declarative regex plugins for pre_parse and
1434
+
1435
+ post_render phases.
1436
+
1437
+ - Add `--no-plugins` CLI flag to disable all plugins for a
1438
+
1439
+ run.
1440
+
1441
+ - Support `plugins: true/false` metadata to enable or
1442
+
1443
+ disable plugins.
1444
+
1445
+ - Initial planning for a remote plugin directory and install
1446
+
1447
+ features
1448
+
1449
+ ### Improved
1450
+
1451
+ - Exclude headings with .no_toc class from generated tables
1452
+
1453
+ of contents for finer-grained TOC control.
1454
+
1455
+ - MMD-style {{file.*}} now resolves preferred extensions
1456
+
1457
+ before globbing.
1458
+
1459
+ - Transclusion respects brace-style patterns such as
1460
+
1461
+ {{{intro,part1}.md}} where supported.
1462
+
1463
+ - Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
1464
+
1465
+ plugin code and data.
1466
+
1467
+ - Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
1468
+
1469
+ ## [0.1.27] - 2025-12-15
1470
+
1471
+ ### Changed
1472
+
1473
+ - Default wikilink URLs now replace spaces with dashes (e.g.
1474
+
1475
+ [[Home Page]] -> href="Home-Page").
1476
+
1477
+ ### New
1478
+
1479
+ - Add --wikilink-space and --wikilink-extension flags to
1480
+
1481
+ control how [[WikiLink]] hrefs are generated.
1482
+
1483
+ - Allow wikilink space and extension configuration via
1484
+
1485
+ metadata keys wikilink-space and wikilink-extension.
1486
+
1487
+ - Support Kramdown-style {:toc ...} markers mapped to Apex
1488
+
1489
+ TOC generation.
1490
+
1491
+ - Add tests for `{:toc}` syntaxes
1492
+ - MMD includes support full glob patterns like {{*.md}} and
1493
+
1494
+ {{c?de.py}}.
1495
+
1496
+ - Add plugin discovery from .apex/plugins and
1497
+
1498
+ ~/.config/apex/plugins.
1499
+
1500
+ - Allow external handler plugins in any language via JSON
1501
+
1502
+ stdin/stdout.
1503
+
1504
+ - Support declarative regex plugins for pre_parse and
1505
+
1506
+ post_render phases.
1507
+
1508
+ - Add `--no-plugins` CLI flag to disable all plugins for a
1509
+
1510
+ run.
1511
+
1512
+ - Support `plugins: true/false` metadata to enable or
1513
+
1514
+ disable plugins.
1515
+
1516
+ - Initial planning for a remote plugin directory and install
1517
+
1518
+ features
1519
+
1520
+ ### Improved
1521
+
1522
+ - Exclude headings with .no_toc class from generated tables
1523
+
1524
+ of contents for finer-grained TOC control.
1525
+
1526
+ - MMD-style {{file.*}} now resolves preferred extensions
1527
+
1528
+ before globbing.
1529
+
1530
+ - Transclusion respects brace-style patterns such as
1531
+
1532
+ {{{intro,part1}.md}} where supported.
1533
+
1534
+ - Provide `APEX_PLUGIN_DIR` and `APEX_SUPPORT_DIR` for
1535
+
1536
+ plugin code and data.
1537
+
1538
+ - Add profiling (APEX_PROFILE_PLUGINS=1) for plugins
1539
+
1540
+ ## [0.1.26] - 2025-12-14
1541
+
1542
+ ### Changed
1543
+
1544
+ - Change `--enable-includes` to `--[no-]includes`, allowing
1545
+
1546
+ `--no-includes` to disable includes in unified mode and
1547
+ shortening the flag
1548
+
1549
+ - Integrate metadata-to-options application into CLI after
1550
+
1551
+ metadata merging
1552
+
1553
+ - Preserve bibliography files array when metadata mode
1554
+
1555
+ resets options structure
1556
+
1557
+ ### New
1558
+
1559
+ - Add apex_apply_metadata_to_options() function to apply
1560
+
1561
+ metadata values to apex_options structure
1562
+
1563
+ - Support controlling boolean flags via metadata (indices,
1564
+
1565
+ wikilinks, includes, relaxed-tables, alpha-lists,
1566
+ mixed-lists, sup-sub, autolink, transforms, unsafe,
1567
+ tables, footnotes, smart, math, ids, header-anchors,
1568
+ embed-images, link-citations, show-tooltips,
1569
+ suppress-bibliography, suppress-index,
1570
+ group-index-by-letter, obfuscate-emails, pretty,
1571
+ standalone, hardbreaks)
1572
+
1573
+ - Support controlling string options via metadata
1574
+
1575
+ (bibliography, csl, title, style/css, id-format, base-dir,
1576
+ mode)
1577
+
1578
+ - Boolean metadata values accept true/false, yes/no, or 1/0
1579
+
1580
+ (case-insensitive, downcased)
1581
+
1582
+ - String metadata values used directly for options that take
1583
+
1584
+ arguments
1585
+
1586
+ - Metadata mode option resets options to mode defaults
1587
+
1588
+ before applying other metadata
1589
+
1590
+ - Comprehensive tests for metadata control of command line
1591
+
1592
+ options
1593
+
1594
+ ## [0.1.25] - 2025-12-13
1595
+
1596
+ ### New
1597
+
1598
+ - Add citation processing with support for Pandoc,
1599
+
1600
+ MultiMarkdown, and mmark syntaxes
1601
+
1602
+ - Add bibliography loading from BibTeX, CSL JSON, and CSL
1603
+
1604
+ YAML formats
1605
+
1606
+ - Add --bibliography CLI option to specify bibliography
1607
+
1608
+ files (can be used multiple times)
1609
+
1610
+ - Add --csl CLI option to specify citation style file
1611
+ - Add --no-bibliography CLI option to suppress bibliography
1612
+
1613
+ output
1614
+
1615
+ - Add --link-citations CLI option to link citations to
1616
+
1617
+ bibliography entries
1618
+
1619
+ - Add --show-tooltips CLI option for citation tooltips
1620
+ - Add bibliography generation and insertion at <!--
1621
+
1622
+ REFERENCES --> marker
1623
+
1624
+ Add support for bibliography specified in document metadata
1625
+
1626
+ - Added missing docs and man page for citation support
1627
+ - Add support for transclude base metadata to control file
1628
+
1629
+ transclusion paths
1630
+
1631
+ - Add Base Header Level and HTML Header Level metadata to
1632
+
1633
+ adjust heading levels
1634
+
1635
+ - Add CSS metadata to link external stylesheets in
1636
+
1637
+ standalone HTML documents
1638
+
1639
+ - Add HTML Header and HTML Footer metadata to inject custom
1640
+
1641
+ HTML
1642
+
1643
+ - Add Language metadata to set HTML lang attribute in
1644
+
1645
+ standalone documents
1646
+
1647
+ - Add Quotes Language metadata to control smart quote styles
1648
+
1649
+ (French, German, Spanish, etc.)
1650
+
1651
+ - Add --css CLI flag as alias for --style with metadata
1652
+
1653
+ override precedence
1654
+
1655
+ - Add metadata key normalization: case-insensitive matching
1656
+
1657
+ with spaces removed (e.g., "HTML Header Level" matches
1658
+ "htmlheaderlevel")
1659
+
1660
+ - Add index extension supporting mmark syntax (!item),
1661
+
1662
+ (!item, subitem), and (!!item, subitem) for primary
1663
+ entries
1664
+
1665
+ - Add TextIndex syntax support with {^}, [term]{^}, and
1666
+
1667
+ {^params} patterns
1668
+
1669
+ - Add automatic index generation at end of document or at
1670
+
1671
+ <!--INDEX--> marker
1672
+
1673
+ - Add alphabetical sorting and optional grouping by first
1674
+
1675
+ letter for index entries
1676
+
1677
+ - Add hierarchical sub-item support in generated index
1678
+ - Add --indices CLI flag to enable index processing
1679
+ - Add --no-indices CLI flag to disable index processing
1680
+ - Add --no-index CLI flag to suppress index generation while
1681
+
1682
+ keeping markers
1683
+
1684
+ - Add comprehensive test suite with 40 index tests covering
1685
+
1686
+ both syntaxes
1687
+
1688
+ ### Improved
1689
+
1690
+ - Only process citations when bibliography is actually
1691
+
1692
+ provided for better performance
1693
+
1694
+ - Add comprehensive tests for MultiMarkdown metadata keys
1695
+ - Add comprehensive performance profiling system
1696
+
1697
+ (APEX_PROFILE=1) to measure processing time for all
1698
+ extensions and CLI operations
1699
+
1700
+ - Add early exit checks for IAL processing when no {:
1701
+
1702
+ markers are present
1703
+
1704
+ - Add early exit checks for index processing when no index
1705
+
1706
+ patterns are found
1707
+
1708
+ - Add early exit checks for citation processing when no
1709
+
1710
+ citation patterns are found
1711
+
1712
+ - Add early exit checks for definition list processing when
1713
+
1714
+ no : patterns are found
1715
+
1716
+ - Optimize alpha lists postprocessing with single-pass
1717
+
1718
+ algorithm replacing O(n*m) strstr() loops
1719
+
1720
+ - Add early exit check for alpha lists postprocessing when
1721
+
1722
+ no markers are present
1723
+
1724
+ - Optimize file I/O by using fwrite() with known length
1725
+
1726
+ instead of fputs()
1727
+
1728
+ - Add markdown syntax detection in definition lists to skip
1729
+
1730
+ parser creation for plain text
1731
+
1732
+ - Optimize definition lists by selectively extracting only
1733
+
1734
+ needed reference definitions instead of prepending all
1735
+
1736
+ - Add profiling instrumentation for all preprocessing,
1737
+
1738
+ parsing, rendering, and post-processing steps
1739
+
1740
+ - Add profiling instrumentation for CLI operations (file
1741
+
1742
+ I/O, metadata processing)
1743
+
1744
+ ### Fixed
1745
+
1746
+ - Prevent autolinking of @ symbols in citation syntax (e.g.,
1747
+
1748
+ [@key])
1749
+
1750
+ - Handle HTML comments in autolinker to preserve citation
1751
+
1752
+ placeholders
1753
+
1754
+ - Fix quote language adjustment to handle Unicode curly
1755
+
1756
+ quotes in addition to HTML entities
1757
+
1758
+ Fix bibliography_files assignment to remove unnecessary cast
1759
+
1760
+ - Fix heap-buffer-overflow in html_renderer.c when writing
1761
+
1762
+ null terminator (allocate capacity+1)
1763
+
1764
+ - Fix use-after-free in ial.c by deferring node unlinking
1765
+
1766
+ until after iteration completes
1767
+
1768
+ - Fix buffer overflow in definition_list.c HTML entity
1769
+
1770
+ escaping (correct length calculation for &amp; and &quot;)
1771
+
1772
+ ## [0.1.24] - 2025-12-13
1773
+
1774
+ ### New
1775
+
1776
+ - Add citation processing with support for Pandoc,
1777
+
1778
+ MultiMarkdown, and mmark syntaxes
1779
+
1780
+ - Add bibliography loading from BibTeX, CSL JSON, and CSL
1781
+
1782
+ YAML formats
1783
+
1784
+ - Add --bibliography CLI option to specify bibliography
1785
+
1786
+ files (can be used multiple times)
1787
+
1788
+ - Add --csl CLI option to specify citation style file
1789
+ - Add --no-bibliography CLI option to suppress bibliography
1790
+
1791
+ output
1792
+
1793
+ - Add --link-citations CLI option to link citations to
1794
+
1795
+ bibliography entries
1796
+
1797
+ - Add --show-tooltips CLI option for citation tooltips
1798
+ - Add bibliography generation and insertion at <!--
1799
+
1800
+ REFERENCES --> marker
1801
+
1802
+ Add support for bibliography specified in document metadata
1803
+
1804
+ ### Improved
1805
+
1806
+ - Only process citations when bibliography is actually
1807
+
1808
+ provided for better performance
1809
+
1810
+ ### Fixed
1811
+
1812
+ - Raw HTML tags and comments are now preserved in definition
1813
+
1814
+ lists by default in unified mode. Previously, HTML content
1815
+ in definition list definitions was being replaced with
1816
+ "raw HTML omitted" even when using --unsafe or in unified
1817
+ mode.
1818
+
1819
+ - Unified mode now explicitly sets unsafe=true by default to
1820
+
1821
+ ensure raw HTML is allowed.
1822
+
1823
+ - Prevent autolinking of @ symbols in citation syntax (e.g.,
1824
+
1825
+ [@key])
1826
+
1827
+ - Handle HTML comments in autolinker to preserve citation
1828
+
1829
+ placeholders
1830
+
1831
+ ## [0.1.23] - 2025-12-12
1832
+
1833
+ ### Changed
1834
+
1835
+ - Remove remote image embedding support (curl dependency
1836
+
1837
+ removed)
1838
+
1839
+ ### New
1840
+
1841
+ - Add metadata variable transforms with [%key:transform]
1842
+
1843
+ syntax
1844
+
1845
+ - Add --transforms and --no-transforms flags to
1846
+
1847
+ enable/disable transforms
1848
+
1849
+ - Add 19 text transforms: upper, lower, title, capitalize,
1850
+
1851
+ trim, slug, replace (with regex support), substring,
1852
+ truncate, default, html_escape, basename, urlencode,
1853
+ urldecode, prefix, suffix, remove, repeat, reverse,
1854
+ format, length, pad, contains
1855
+
1856
+ - Add array transforms: split, join, first, last, slice
1857
+ - Add date/time transform: strftime with date parsing
1858
+ - Add transform chaining support (multiple transforms
1859
+
1860
+ separated by colons)
1861
+
1862
+ - Add --meta-file flag to load metadata from external files
1863
+
1864
+ (YAML, MMD, or Pandoc format, auto-detected)
1865
+
1866
+ - Add --meta KEY=VALUE flag to set metadata from command
1867
+
1868
+ line (supports multiple flags and comma-separated pairs)
1869
+
1870
+ - Add metadata merging with proper precedence: command-line
1871
+ > document > file
1872
+ - Add --embed-images flag to embed local images as base64
1873
+
1874
+ data URLs in HTML output
1875
+
1876
+ - Add --base-dir flag to set base directory for resolving
1877
+
1878
+ relative paths (images, includes, wiki links)
1879
+
1880
+ - Add automatic base directory detection from input file
1881
+
1882
+ directory when reading from file
1883
+
1884
+ - Add base64 encoding utility for image data
1885
+ - Add MIME type detection from file extensions (supports
1886
+
1887
+ jpg, png, gif, webp, svg, bmp, ico)
1888
+
1889
+ - Add image embedding function that processes HTML and
1890
+
1891
+ replaces local image src attributes with data URLs
1892
+
1893
+ - Add test suite for image embedding functionality
1894
+
1895
+ ### Improved
1896
+
1897
+ - Wiki link scanner now processes all links in a text node
1898
+
1899
+ in a single pass instead of recursively processing one at
1900
+ a time, significantly improving performance for documents
1901
+ with multiple wiki links per text node.
1902
+
1903
+ - Added early-exit optimization to skip wiki link AST
1904
+
1905
+ traversal entirely when no wiki link markers are present
1906
+ in the document.
1907
+
1908
+ - Improve error handling in transform execution to return
1909
+
1910
+ original value instead of NULL on failure
1911
+
1912
+ - Add comprehensive test coverage for all transforms
1913
+
1914
+ including edge cases
1915
+
1916
+ - Relative path resolution for images now uses
1917
+
1918
+ base_directory option
1919
+
1920
+ - Base directory is automatically set from input file
1921
+
1922
+ location when not specified
1923
+
1924
+ ### Fixed
1925
+
1926
+ - Fix bracket handling in regex patterns - properly match
1927
+
1928
+ closing brackets in [%...] syntax when patterns contain
1929
+ brackets
1930
+
1931
+ - Fix YAML metadata parsing to strip quotes from quoted
1932
+
1933
+ string values
1934
+
1935
+ - Raw HTML tags and comments are now preserved in definition
1936
+
1937
+ lists by default in unified mode. Previously, HTML content
1938
+ in definition list definitions was being replaced with
1939
+ "raw HTML omitted" even when using --unsafe or in unified
1940
+ mode.
1941
+
1942
+ - Unified mode now explicitly sets unsafe=true by default to
1943
+
1944
+ ensure raw HTML is allowed.
1945
+
1946
+ ## [0.1.20] - 2025-12-11
1947
+
1948
+ #### NEW
1949
+
1950
+ - Added man page generation and installation support. Man
1951
+
1952
+ pages can be generated from Markdown source using pandoc
1953
+ or go-md2man, with pre-generated man pages included in the
1954
+ repository as fallback. CMake build system now handles man
1955
+ page installation, and Homebrew formula installs the man
1956
+ page.
1957
+
1958
+ - Added comprehensive test suite for MMD 6 features
1959
+
1960
+ including multi-line setext headers and link/image titles
1961
+ with different quote styles (single quotes, double quotes,
1962
+ parentheses). Tests verify these features work in both
1963
+ MultiMarkdown and unified modes.
1964
+
1965
+ - Added build-test man_page_copy target for man page
1966
+
1967
+ installation.
1968
+
1969
+ - Added --obfuscate-emails flag to hex-encode mailto links.
1970
+
1971
+ #### IMPROVED
1972
+
1973
+ - Superscript processing now stops at sentence terminators
1974
+
1975
+ (. , ; : ! ?) instead of including them in the superscript
1976
+ content. This prevents punctuation from being incorrectly
1977
+ included in superscripts.
1978
+
1979
+ - Enhanced subscript and underline detection logic. The
1980
+
1981
+ processor now correctly differentiates between subscript
1982
+ (tildes within a word, e.g., H~2~O) and underline (tildes
1983
+ at word boundaries, e.g., ~text~) by checking if tildes
1984
+ are within alphanumeric words or at word boundaries.
1985
+
1986
+ - Expanded test coverage for superscript, subscript,
1987
+
1988
+ underline, strikethrough, and highlight features with
1989
+ additional edge case tests.
1990
+
1991
+ - Email autolink detection trims trailing punctuation.
1992
+
1993
+ #### FIXED
1994
+
1995
+ - Autolink now only wraps real URLs/emails instead of every
1996
+
1997
+ word.
1998
+
1999
+ Email autolinks now use mailto: hrefs instead of bare text.
2000
+
2001
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2002
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2003
+
2004
+ ## [0.1.19] - 2025-12-09
2005
+
2006
+ #### CHANGED
2007
+
2008
+ - HTML comments now replaced with "raw HTML omitted" in
2009
+
2010
+ CommonMark and GFM modes by default
2011
+
2012
+ - Added enable_sup_sub flag to apex_options struct
2013
+ - Updated mode configurations to enable sup/sub in
2014
+
2015
+ appropriate modes
2016
+
2017
+ - Added sup_sub.c to CMakeLists.txt build configuration
2018
+ - Removed unused variables to resolve compiler warnings
2019
+ - Tag filter (GFM security feature) now only applies in GFM
2020
+
2021
+ mode, not Unified mode, allowing raw HTML and autolinks in
2022
+ Unified mode as intended.
2023
+
2024
+ - Autolink extension registration now respects the
2025
+
2026
+ enable_autolink option flag.
2027
+
2028
+ #### NEW
2029
+
2030
+ - Added MultiMarkdown-style superscript (^text^) and
2031
+
2032
+ subscript (~text~) syntax support
2033
+
2034
+ - Added --[no-]sup-sub command-line option to enable/disable
2035
+
2036
+ superscript/subscript
2037
+
2038
+ - Superscript/subscript enabled by default in unified and
2039
+
2040
+ MultiMarkdown modes
2041
+
2042
+ - Created sup_sub extension (sup_sub.c and sup_sub.h) for
2043
+
2044
+ processing ^ and ~ syntax
2045
+
2046
+ - Added --[no-]unsafe command-line option to control raw
2047
+
2048
+ HTML handling
2049
+
2050
+ - Added test_sup_sub() function with 13 tests covering
2051
+
2052
+ superscript and
2053
+
2054
+ - Added test_mixed_lists() function with 10 tests covering
2055
+
2056
+ mixed list
2057
+
2058
+ - Added test_unsafe_mode() function with 8 tests covering
2059
+
2060
+ raw HTML
2061
+
2062
+ - Added preprocessing for angle-bracket autolinks
2063
+
2064
+ (<http://...>) to convert them to explicit markdown links,
2065
+ ensuring they work correctly with custom rendering paths.
2066
+
2067
+ - Added --[no-]autolink CLI option to control automatic
2068
+
2069
+ linking of URLs and email addresses. Autolinking is
2070
+ enabled by default in GFM, MultiMarkdown, Kramdown, and
2071
+ unified modes, and disabled in CommonMark mode.
2072
+
2073
+ - Added enable_autolink field to apex_options structure to
2074
+
2075
+ control autolink behavior programmatically.
2076
+
2077
+ - Added underline syntax support: ~text~ now renders as
2078
+
2079
+ <u>text</u> when there's a closing ~ with no space before
2080
+ it.
2081
+
2082
+ #### IMPROVED
2083
+
2084
+ - Test suite now includes 36 additional tests, increasing
2085
+
2086
+ total test
2087
+
2088
+ - Autolink preprocessing now skips processing inside code
2089
+
2090
+ spans (`...`) and code blocks (```...```), preventing URLs
2091
+ from being converted to links when they appear in code
2092
+ examples.
2093
+
2094
+ - Metadata replacement retains HTML edge-case handling and
2095
+
2096
+ properly cleans up intermediate buffers.
2097
+
2098
+ #### FIXED
2099
+
2100
+ - Unified mode now correctly enables mixed list markers and
2101
+
2102
+ alpha lists by default when no --mode is specified
2103
+
2104
+ - ^ marker now properly separates lists by creating a
2105
+
2106
+ paragraph break instead of just blank lines
2107
+
2108
+ - Empty paragraphs created by ^ marker are now removed from
2109
+
2110
+ final HTML output
2111
+
2112
+ - Superscript and subscript processing now skips ^ and ~
2113
+
2114
+ characters
2115
+
2116
+ - Superscript processing now skips ^ when part of footnote
2117
+
2118
+ reference
2119
+
2120
+ - Subscript processing now skips ~ when part of critic
2121
+
2122
+ markup patterns
2123
+
2124
+ - Setext headers are no longer broken when followed by
2125
+
2126
+ highlight syntax (==text==). Highlight processing now
2127
+ stops at line breaks to prevent interference with header
2128
+ parsing.
2129
+
2130
+ - Metadata parser no longer incorrectly treats URLs and
2131
+
2132
+ angle-bracket autolinks as metadata. Lines containing < or
2133
+ URLs (http://, https://, mailto:) are now skipped during
2134
+ metadata extraction.
2135
+
2136
+ - Superscript/subscript processor now correctly
2137
+
2138
+ differentiates between ~text~ (underline), ~word
2139
+ (subscript), and ~~text~~ (strikethrough). Double-tilde
2140
+ sequences are skipped so strikethrough extension can
2141
+ handle them.
2142
+
2143
+ - Subscript processing now stops at sentence terminators (.
2144
+
2145
+ , ; : ! ?) instead of including them in the subscript
2146
+ content.
2147
+
2148
+ - Metadata variable replacement now runs before autolinking
2149
+
2150
+ so [%key] values containing URLs are turned into links
2151
+ when autolinking is enabled.
2152
+
2153
+ - MMD metadata parsing no longer incorrectly rejects entries
2154
+
2155
+ with URL values; only URL-like keys or '<' characters in
2156
+ keys are rejected, allowing "URL: https://example.com" as
2157
+ valid metadata.
2158
+
2159
+ Headers starting with `#` are now correctly recognized instead of being treated as autolinks. The autolink preprocessor now skips `#` at the start of a line when followed by whitespace.
2160
+
2161
+ Math processor now validates that `\(...\)` sequences contain actual math content (letters, numbers, or operators) before processing them. This prevents false positives like `\(%\)` from being treated as math when they only contain special characters.
2162
+
2163
+ ## [0.1.18] - 2025-12-06
2164
+
2165
+ ### Fixed
2166
+ - GitHub Actions workflow now properly builds separate Linux
2167
+
2168
+ x86_64 and ARM64 binaries
2169
+
2170
+ ## [0.1.17] - 2025-12-06
2171
+
2172
+ ### Fixed
2173
+ - Relaxed tables now disabled by default for CommonMark,
2174
+
2175
+ GFM, and MultiMarkdown modes (only enabled for Kramdown
2176
+ and Unified modes)
2177
+
2178
+ - Header ID extraction no longer incorrectly parses metadata
2179
+
2180
+ variables like `[%title]` as MMD-style header IDs
2181
+
2182
+ - Tables with alignment/separator rows now correctly
2183
+
2184
+ generate `<thead>` even when relaxed table mode is enabled
2185
+
2186
+ - Relaxed tables preprocessor preserves input newline
2187
+
2188
+ behavior in output
2189
+
2190
+ - Memory management bug in IAL preprocessing removed
2191
+
2192
+ unnecessary free call
2193
+
2194
+ ## [0.1.16] - 2025-12-06
2195
+
2196
+ ### Fixed
2197
+ - IAL (Inline Attribute List) markers appearing immediately
2198
+
2199
+ after content without a blank line are now correctly
2200
+ parsed
2201
+
2202
+ Added `apex_preprocess_ial()` function to ensure Kramdown-style IAL syntax works correctly with cmark-gfm parser
2203
+
2204
+ ## [0.1.15] - 2025-12-06
2205
+
2206
+ ### Fixed
2207
+ - Homebrew formula updated with correct version and commit
2208
+
2209
+ hash
2210
+
2211
+ ## [0.1.10] - 2025-12-06
2212
+
2213
+ ### Changed
2214
+ - License changed to MIT
2215
+
2216
+ ### Added
2217
+ - Homebrew formula update scripts
2218
+
2219
+ ## [0.1.9] - 2025-12-06
2220
+
2221
+ ### Fixed
2222
+ - Shell syntax in Linux checksum step for GitHub Actions
2223
+
2224
+ ## [0.1.8] - 2025-12-06
2225
+
2226
+ ### Fixed
2227
+ - Link order for Linux static builds
2228
+
2229
+ ## [0.1.7] - 2025-12-06
2230
+
2231
+ ### Fixed
2232
+ - Added write permissions for GitHub releases
2233
+
2234
+ ## [0.1.6] - 2025-12-06
2235
+
2236
+ ### Fixed
2237
+ `.gitignore` pattern fixed to properly include apex headers (was incorrectly matching `include/apex/`)
2238
+
2239
+ ## [0.1.5] - 2025-12-06
2240
+
2241
+ ### Changed
2242
+ - Added verbose build output for CI debugging
2243
+
2244
+ ## [0.1.4] - 2025-12-06
2245
+
2246
+ ### Fixed
2247
+ - CMake build rules updated
2248
+
2249
+ ## [0.1.3] - 2025-12-06
2250
+
2251
+ ### Fixed
2252
+ - CMake policy version for cmark-gfm compatibility
2253
+
2254
+ ## [0.1.2] - 2025-12-06
2255
+
2256
+ ### Fixed
2257
+ - GitHub Actions workflow fixes
2258
+
2259
+ ## [0.1.1] - 2025-12-04
2260
+
2261
+ ### Added
2262
+ - CMake setup documentation
2263
+
2264
+ ## [0.1.0] - 2025-12-04
2265
+
2266
+ ### Added
2267
+
2268
+ **Core Features:**
2269
+
2270
+ - Initial release of Apex unified Markdown processor
2271
+ - Based on cmark-gfm for CommonMark + GFM support
2272
+ - Support for 5 processor modes: CommonMark, GFM,
2273
+
2274
+ MultiMarkdown, Kramdown, Unified
2275
+
2276
+ **Metadata:**
2277
+
2278
+ - YAML front matter parsing
2279
+ - MultiMarkdown metadata format
2280
+ - Pandoc title block format
2281
+ - Metadata variable replacement with `[%key]` syntax
2282
+
2283
+ **Extended Syntax:**
2284
+
2285
+ - Wiki-style links: `[[Page]]`, `[[Page|Display]]`,
2286
+
2287
+ `[[Page#Section]]`
2288
+
2289
+ - Math support: `$inline$` and `$$display$$` with LaTeX
2290
+ - Critic Markup: All 5 types ({++add++}, {--del--},
2291
+
2292
+ {~~sub~~}, {==mark==}, {>>comment<<})
2293
+
2294
+ - GFM tables, strikethrough, task lists, autolinks
2295
+ - Reference-style footnotes
2296
+ - Smart typography (smart quotes, dashes, ellipsis)
2297
+
2298
+ **Build System:**
2299
+
2300
+ - CMake build system for cross-platform support
2301
+ - Builds shared library, static library, CLI binary, and
2302
+
2303
+ macOS framework
2304
+
2305
+ - Clean compilation on macOS with Apple Clang
2306
+
2307
+ **CLI Tool:**
2308
+
2309
+ - `apex` command-line binary
2310
+ - Support for all processor modes via `--mode` flag
2311
+ - Stdin/stdout support for Unix pipes
2312
+ - Comprehensive help and version information
2313
+
2314
+ **Integration:**
2315
+
2316
+ Objective-C wrapper (`NSString+Apex`) for Marked integration
2317
+
2318
+ - macOS framework with proper exports
2319
+ - Detailed integration documentation and examples
2320
+
2321
+ **Testing:**
2322
+
2323
+ - Automated test suite with 31 tests
2324
+ - 90% pass rate across all feature areas
2325
+ - Manual testing validated
2326
+
2327
+ **Documentation:**
2328
+
2329
+ - Comprehensive user guide
2330
+ - Complete API reference
2331
+ - Architecture documentation
2332
+ - Integration guides
2333
+ - Code examples
2334
+
2335
+ ### Known Issues
2336
+
2337
+ - Critic Markup substitutions have edge cases with certain
2338
+
2339
+ inputs
2340
+
2341
+ - Definition lists not yet implemented
2342
+ - Kramdown attributes not yet implemented
2343
+ - Inline footnotes not yet implemented
2344
+
2345
+ ### Performance
2346
+
2347
+ - Small documents (< 10KB): < 10ms
2348
+ - Medium documents (< 100KB): < 100ms
2349
+ - Large documents (< 1MB): < 1s
2350
+
2351
+ ### Credits
2352
+
2353
+ Based on [cmark-gfm](https://github.com/github/cmark-gfm) by GitHub
2354
+
2355
+ Developed for [Marked](https://marked2app.com) by Brett Terpstra
2356
+
2357
+ z
2358
+
2359
+ [0.1.73]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.73
2360
+ [0.1.72]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.72
2361
+ [0.1.71]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.71
2362
+ [0.1.70]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.70
2363
+ [0.1.69]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.69
2364
+ [0.1.68]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.68
2365
+ [0.1.67]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.67
2366
+ [0.1.66]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.66
2367
+ [0.1.65]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.65
2368
+ [0.1.64]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.64
2369
+ [0.1.63]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.63
2370
+ [0.1.62]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.62
2371
+ [0.1.61]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.61
2372
+ [0.1.60]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.60
2373
+ [0.1.59]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.59
2374
+ [0.1.58]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.58
2375
+ [0.1.57]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.57
2376
+ [0.1.56]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.56
2377
+ [0.1.55]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.55
2378
+ [0.1.54]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.54
2379
+ [0.1.53]: https://github.com/ApexMarkdown/apex/releases/tag/v0.1.53
2380
+ [0.1.52]: https://github.com/ttscoff/apex/releases/tag/v0.1.52
2381
+ [0.1.51]: https://github.com/ttscoff/apex/releases/tag/v0.1.51
2382
+ [0.1.50]: https://github.com/ttscoff/apex/releases/tag/v0.1.50
2383
+ [0.1.49]: https://github.com/ttscoff/apex/releases/tag/v0.1.49
2384
+ [0.1.48]: https://github.com/ttscoff/apex/releases/tag/v0.1.48
2385
+ [0.1.47]: https://github.com/ttscoff/apex/releases/tag/v0.1.47
2386
+ [0.1.46]: https://github.com/ttscoff/apex/releases/tag/v0.1.46
2387
+ [0.1.45]: https://github.com/ttscoff/apex/releases/tag/v0.1.45
2388
+ [0.1.44]: https://github.com/ttscoff/apex/releases/tag/v0.1.44
2389
+ [0.1.43]:
2390
+ https://github.com/ttscoff/apex/releases/tag/v0.1.43
2391
+ [0.1.42]:
2392
+ https://github.com/ttscoff/apex/releases/tag/v0.1.42
2393
+ [0.1.41]:
2394
+ https://github.com/ttscoff/apex/releases/tag/v0.1.41
2395
+ [0.1.40]:
2396
+ https://github.com/ttscoff/apex/releases/tag/v0.1.40
2397
+ [0.1.39]:
2398
+ https://github.com/ttscoff/apex/releases/tag/v0.1.39
2399
+ [0.1.38]:
2400
+ https://github.com/ttscoff/apex/releases/tag/v0.1.38
2401
+ [0.1.37]:
2402
+ https://github.com/ttscoff/apex/releases/tag/v0.1.37
2403
+ [0.1.36]:
2404
+ https://github.com/ttscoff/apex/releases/tag/v0.1.36
2405
+ [0.1.35]:
2406
+ https://github.com/ttscoff/apex/releases/tag/v0.1.35
2407
+ [0.1.34]:
2408
+ https://github.com/ttscoff/apex/releases/tag/v0.1.34
2409
+ [0.1.33]:
2410
+ https://github.com/ttscoff/apex/releases/tag/v0.1.33
2411
+ [0.1.32]:
2412
+ https://github.com/ttscoff/apex/releases/tag/v0.1.32
2413
+ [0.1.31]:
2414
+ https://github.com/ttscoff/apex/releases/tag/v0.1.31
2415
+ [0.1.30]:
2416
+ https://github.com/ttscoff/apex/releases/tag/v0.1.30
2417
+ [0.1.29]:
2418
+ https://github.com/ttscoff/apex/releases/tag/v0.1.29
2419
+ [0.1.28]:
2420
+ https://github.com/ttscoff/apex/releases/tag/v0.1.28
2421
+ [0.1.27]:
2422
+ https://github.com/ttscoff/apex/releases/tag/v0.1.27
2423
+ [0.1.26]:
2424
+ https://github.com/ttscoff/apex/releases/tag/v0.1.26
2425
+ [0.1.25]:
2426
+ https://github.com/ttscoff/apex/releases/tag/v0.1.25
2427
+ [0.1.24]:
2428
+ https://github.com/ttscoff/apex/releases/tag/v0.1.24
2429
+ [0.1.23]:
2430
+ https://github.com/ttscoff/apex/releases/tag/v0.1.23
2431
+ [0.1.20]:
2432
+ https://github.com/ttscoff/apex/releases/tag/v0.1.20
2433
+ [0.1.19]:
2434
+ https://github.com/ttscoff/apex/releases/tag/v0.1.19
2435
+ [0.1.18]:
2436
+ https://github.com/ttscoff/apex/releases/tag/v0.1.18
2437
+ [0.1.17]:
2438
+ https://github.com/ttscoff/apex/releases/tag/v0.1.17
2439
+ [0.1.16]:
2440
+ https://github.com/ttscoff/apex/releases/tag/v0.1.16
2441
+ [0.1.15]:
2442
+ https://github.com/ttscoff/apex/releases/tag/v0.1.15
2443
+ [0.1.10]:
2444
+ https://github.com/ttscoff/apex/releases/tag/v0.1.10
2445
+ [0.1.9]: https://github.com/ttscoff/apex/releases/tag/v0.1.9
2446
+ [0.1.8]: https://github.com/ttscoff/apex/releases/tag/v0.1.8
2447
+ [0.1.7]: https://github.com/ttscoff/apex/releases/tag/v0.1.7
2448
+ [0.1.6]: https://github.com/ttscoff/apex/releases/tag/v0.1.6
2449
+ [0.1.5]: https://github.com/ttscoff/apex/releases/tag/v0.1.5
2450
+ [0.1.4]: https://github.com/ttscoff/apex/releases/tag/v0.1.4
2451
+ [0.1.3]: https://github.com/ttscoff/apex/releases/tag/v0.1.3
2452
+ [0.1.2]: https://github.com/ttscoff/apex/releases/tag/v0.1.2
2453
+ [0.1.1]: https://github.com/ttscoff/apex/releases/tag/v0.1.1
2454
+ [0.1.0]: https://github.com/ttscoff/apex/releases/tag/v0.1.0