apex-ruby 1.0.18 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -3
  3. data/ext/apex_ext/apex_ext.c +260 -91
  4. data/ext/apex_ext/apex_src/CHANGELOG.md +440 -0
  5. data/ext/apex_ext/apex_src/CMakeLists.txt +15 -1
  6. data/ext/apex_ext/apex_src/Formula/apex.rb +7 -2
  7. data/ext/apex_ext/apex_src/Package.swift +15 -4
  8. data/ext/apex_ext/apex_src/README.md +94 -35
  9. data/ext/apex_ext/apex_src/VERSION +1 -1
  10. data/ext/apex_ext/apex_src/apex-debug.log +4 -0
  11. data/ext/apex_ext/apex_src/apex.code-workspace +38 -0
  12. data/ext/apex_ext/apex_src/apex.taskpaper +12 -0
  13. data/ext/apex_ext/apex_src/apex_deflist_debug.log +25 -0
  14. data/ext/apex_ext/apex_src/buildnotes.md +1435 -0
  15. data/ext/apex_ext/apex_src/cli/main.c +262 -33
  16. data/ext/apex_ext/apex_src/debug.log +7 -0
  17. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +274 -0
  18. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +749 -0
  19. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +744 -0
  20. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +382 -0
  21. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +351 -0
  22. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +745 -0
  23. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +829 -0
  24. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +1148 -0
  25. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +161 -0
  26. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +184 -0
  27. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +211 -0
  28. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +67 -0
  29. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +340 -0
  30. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +11 -0
  31. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +234 -0
  32. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +516 -0
  33. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +461 -0
  34. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +193 -0
  35. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +201 -0
  36. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +678 -0
  37. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +1367 -0
  38. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +6 -0
  39. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +774 -300
  40. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +1194 -0
  41. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +416 -216
  42. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +3544 -1094
  43. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +371 -97
  44. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +153 -23
  45. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +358 -124
  46. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +1656 -0
  47. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +1226 -0
  48. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +201 -56
  49. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +279 -109
  50. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +200 -53
  51. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +2327 -0
  52. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +690 -271
  53. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +201 -55
  54. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +238 -68
  55. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +421 -221
  56. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +340 -78
  57. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +251 -86
  58. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +1362 -0
  59. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +277 -90
  60. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +673 -346
  61. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +1405 -0
  62. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +1902 -0
  63. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +1939 -1698
  64. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +1781 -0
  65. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +315 -140
  66. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +307 -113
  67. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +1132 -0
  68. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +1754 -0
  69. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +872 -376
  70. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  71. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  72. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +8746 -0
  73. data/ext/apex_ext/apex_src/documentation/shared_styles.css +20 -15
  74. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +55 -0
  75. data/ext/apex_ext/apex_src/escaping-repro.md +103 -0
  76. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +8 -0
  77. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  78. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +547 -0
  79. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  80. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +33 -0
  81. data/ext/apex_ext/apex_src/include/apex/apex.h +92 -6
  82. data/ext/apex_ext/apex_src/include/apex/ast_rtf.h +23 -0
  83. data/ext/apex_ext/apex_src/include/apex/ast_terminal.h +6 -0
  84. data/ext/apex_ext/apex_src/include/apex/module.modulemap +5 -0
  85. data/ext/apex_ext/apex_src/include/apex/plugins.h +105 -0
  86. data/ext/apex_ext/apex_src/include/apexc.h +1 -0
  87. data/ext/apex_ext/apex_src/man/apex.1 +82 -78
  88. data/ext/apex_ext/apex_src/man/apex.1.md +81 -4
  89. data/ext/apex_ext/apex_src/objc/Apex.swift +73 -0
  90. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +79 -0
  91. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +83 -5
  92. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +244 -1
  93. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +76 -0
  94. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +169 -0
  95. data/ext/apex_ext/apex_src/output.html +87 -0
  96. data/ext/apex_ext/apex_src/plans/quarto-mode.md +442 -0
  97. data/ext/apex_ext/apex_src/src/_README.md +85 -32
  98. data/ext/apex_ext/apex_src/src/apex.c +770 -200
  99. data/ext/apex_ext/apex_src/src/ast_rtf.c +848 -0
  100. data/ext/apex_ext/apex_src/src/ast_terminal.c +184 -7
  101. data/ext/apex_ext/apex_src/src/extensions/abbreviations.c +10 -3
  102. data/ext/apex_ext/apex_src/src/extensions/advanced_tables.c +7 -11
  103. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.c +467 -0
  104. data/ext/apex_ext/apex_src/src/extensions/bear_image_attrs.h +27 -0
  105. data/ext/apex_ext/apex_src/src/extensions/callouts.c +400 -4
  106. data/ext/apex_ext/apex_src/src/extensions/callouts.h +15 -5
  107. data/ext/apex_ext/apex_src/src/extensions/citations.c +26 -5
  108. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.c +632 -0
  109. data/ext/apex_ext/apex_src/src/extensions/code_fence_attrs.h +22 -0
  110. data/ext/apex_ext/apex_src/src/extensions/concordance.c +632 -0
  111. data/ext/apex_ext/apex_src/src/extensions/definition_list.c +129 -15
  112. data/ext/apex_ext/apex_src/src/extensions/grid_tables.c +1050 -121
  113. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +569 -16
  114. data/ext/apex_ext/apex_src/src/extensions/ial.c +502 -52
  115. data/ext/apex_ext/apex_src/src/extensions/ial.h +2 -1
  116. data/ext/apex_ext/apex_src/src/extensions/includes.c +532 -33
  117. data/ext/apex_ext/apex_src/src/extensions/includes.h +7 -1
  118. data/ext/apex_ext/apex_src/src/extensions/index.c +1427 -140
  119. data/ext/apex_ext/apex_src/src/extensions/index.h +28 -0
  120. data/ext/apex_ext/apex_src/src/extensions/metadata.c +200 -161
  121. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.c +251 -0
  122. data/ext/apex_ext/apex_src/src/extensions/quarto_diagrams.h +22 -0
  123. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.c +624 -0
  124. data/ext/apex_ext/apex_src/src/extensions/quarto_lists.h +35 -0
  125. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.c +264 -0
  126. data/ext/apex_ext/apex_src/src/extensions/quarto_polish.h +23 -0
  127. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.c +307 -0
  128. data/ext/apex_ext/apex_src/src/extensions/quarto_shortcodes.h +21 -0
  129. data/ext/apex_ext/apex_src/src/extensions/raw_content.c +351 -0
  130. data/ext/apex_ext/apex_src/src/extensions/raw_content.h +20 -0
  131. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +117 -3
  132. data/ext/apex_ext/apex_src/src/extensions/special_markers.c +53 -0
  133. data/ext/apex_ext/apex_src/src/extensions/syntax_highlight.c +23 -1
  134. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +83 -92
  135. data/ext/apex_ext/apex_src/src/extensions/toc.c +446 -25
  136. data/ext/apex_ext/apex_src/src/extensions/toc.h +26 -1
  137. data/ext/apex_ext/apex_src/src/extensions/wiki_links.c +28 -0
  138. data/ext/apex_ext/apex_src/src/html_renderer.c +387 -17
  139. data/ext/apex_ext/apex_src/src/plugin_catalog.c +517 -0
  140. data/ext/apex_ext/apex_src/src/plugins_remote.c +88 -14
  141. data/ext/apex_ext/apex_src/src/plugins_remote.h +34 -0
  142. data/ext/apex_ext/apex_src/src/pretty_html.c +6 -1
  143. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +21 -0
  144. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +10 -0
  145. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +19 -0
  146. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +11 -0
  147. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +2 -0
  148. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +46 -0
  149. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +5 -0
  150. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +47 -0
  151. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +3 -0
  152. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +3 -0
  153. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +8 -0
  154. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +19 -0
  155. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +5 -0
  156. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +7 -0
  157. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +81 -0
  158. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +5 -0
  159. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +47 -0
  160. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +192 -0
  161. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +37 -0
  162. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +16 -0
  163. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +301 -0
  164. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +4 -0
  165. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +82 -0
  166. data/ext/apex_ext/apex_src/tests/test_extensions.c +821 -1
  167. data/ext/apex_ext/apex_src/tests/test_ial.c +7 -0
  168. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +25 -0
  169. data/ext/apex_ext/apex_src/tests/test_metadata.c +129 -0
  170. data/ext/apex_ext/apex_src/tests/test_output.c +568 -2
  171. data/ext/apex_ext/apex_src/tests/test_runner.c +11 -0
  172. data/ext/apex_ext/apex_src/tests/test_tables.c +420 -0
  173. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +1 -1
  174. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/autolink.c +77 -1
  175. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/table.c +135 -5
  176. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/blocks.c +56 -1
  177. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +38 -0
  178. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/main.c +1 -1
  179. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  180. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  181. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +69 -0
  182. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +74 -0
  183. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +22 -0
  184. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  185. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +44 -0
  186. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +128 -0
  187. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +5118 -0
  188. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  189. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  190. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +8 -0
  191. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +99 -0
  192. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +452 -0
  193. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +52 -0
  194. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +55 -0
  195. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +2455 -0
  196. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  197. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +171 -0
  198. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +55 -0
  199. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +220 -0
  200. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +43 -0
  201. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +7 -0
  202. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +76 -0
  203. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +10 -0
  204. data/ext/apex_ext/extconf.rb +35 -0
  205. data/lib/apex/version.rb +2 -2
  206. metadata +117 -2
  207. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/tempOptimizedIndex.dsidx +0 -0
@@ -1,4 +1,5 @@
1
1
  #include <cmark-gfm-extension_api.h>
2
+ #include <buffer.h>
2
3
  #include <html.h>
3
4
  #include <inlines.h>
4
5
  #include <parser.h>
@@ -147,6 +148,30 @@ static int set_cell_index(cmark_node *node, int i) {
147
148
  return 1;
148
149
  }
149
150
 
151
+ /* Placeholder for escaped << (literal << in table cells). No underscore so inline parser doesn't treat as emphasis. */
152
+ static const unsigned char ESCAPED_LTLT_PLACEHOLDER[] = "APEXLTLT";
153
+ #define ESCAPED_LTLT_PLACEHOLDER_LEN 8
154
+
155
+ /* Replace \<< with placeholder so it is not treated as colspan; output as << later. */
156
+ static void replace_escaped_ltlt(cmark_mem *mem, cmark_strbuf *buf) {
157
+ bufsize_t r;
158
+ bufsize_t len = buf->size;
159
+ unsigned char *ptr = buf->ptr;
160
+ cmark_strbuf out;
161
+ cmark_strbuf_init(mem, &out, len + 1);
162
+
163
+ for (r = 0; r < len;) {
164
+ if (r + 2 < len && ptr[r] == '\\' && ptr[r + 1] == '<' && ptr[r + 2] == '<') {
165
+ cmark_strbuf_put(&out, ESCAPED_LTLT_PLACEHOLDER, ESCAPED_LTLT_PLACEHOLDER_LEN);
166
+ r += 3;
167
+ } else {
168
+ cmark_strbuf_putc(&out, ptr[r++]);
169
+ }
170
+ }
171
+ cmark_strbuf_swap(buf, &out);
172
+ cmark_strbuf_free(&out);
173
+ }
174
+
150
175
  static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsize_t len)
151
176
  {
152
177
  cmark_strbuf *res = (cmark_strbuf *)mem->calloc(1, sizeof(cmark_strbuf));
@@ -168,6 +193,81 @@ static cmark_strbuf *unescape_pipes(cmark_mem *mem, unsigned char *string, bufsi
168
193
  return res;
169
194
  }
170
195
 
196
+ /* Keep table delimiter scanning out of code content by masking pipes. */
197
+ static void mask_pipes_in_code(unsigned char *string, int len) {
198
+ int i;
199
+ bool in_fenced_code = false;
200
+ bool in_code_span = false;
201
+ unsigned char fence_char = 0;
202
+ int fence_len = 0;
203
+ int code_span_ticks = 0;
204
+ bool line_start = true;
205
+ int line_indent = 0;
206
+ bool line_is_indented_code = false;
207
+
208
+ for (i = 0; i < len; ++i) {
209
+ unsigned char c = string[i];
210
+
211
+ if (line_start) {
212
+ line_indent = 0;
213
+ while (i < len && string[i] == ' ' && line_indent < 4) {
214
+ line_indent++;
215
+ i++;
216
+ }
217
+ if (i >= len) {
218
+ break;
219
+ }
220
+ c = string[i];
221
+ line_start = false;
222
+ line_is_indented_code = !in_fenced_code && line_indent >= 4;
223
+
224
+ if (!in_code_span && line_indent <= 3 && (c == '`' || c == '~')) {
225
+ int j = i;
226
+ while (j < len && string[j] == c) {
227
+ j++;
228
+ }
229
+ if (j - i >= 3) {
230
+ if (!in_fenced_code) {
231
+ in_fenced_code = true;
232
+ fence_char = c;
233
+ fence_len = j - i;
234
+ } else if (fence_char == c && j - i >= fence_len) {
235
+ in_fenced_code = false;
236
+ }
237
+ }
238
+ }
239
+ }
240
+
241
+ c = string[i];
242
+ if (!in_fenced_code && !line_is_indented_code && c == '`') {
243
+ int j = i;
244
+ while (j < len && string[j] == '`') {
245
+ j++;
246
+ }
247
+ if (!in_code_span) {
248
+ in_code_span = true;
249
+ code_span_ticks = j - i;
250
+ } else if (j - i == code_span_ticks) {
251
+ in_code_span = false;
252
+ code_span_ticks = 0;
253
+ }
254
+ i = j - 1;
255
+ continue;
256
+ }
257
+
258
+ if (c == '|' && (in_fenced_code || line_is_indented_code || in_code_span)) {
259
+ string[i] = '\x1f';
260
+ }
261
+
262
+ if (c == '\n' || c == '\r') {
263
+ line_start = true;
264
+ if (c == '\r' && i + 1 < len && string[i + 1] == '\n') {
265
+ i++;
266
+ }
267
+ }
268
+ }
269
+ }
270
+
171
271
  // Adds a new cell to the end of the row. A pointer to the new cell is returned
172
272
  // for the caller to initialize.
173
273
  static node_cell* append_row_cell(cmark_mem *mem, table_row *row) {
@@ -205,19 +305,28 @@ static table_row *row_from_string(cmark_syntax_extension *self,
205
305
  int expect_more_cells = 1;
206
306
  int row_end_offset = 0;
207
307
  int int_overflow_abort = 0;
308
+ unsigned char *scan_string = NULL;
309
+
310
+ scan_string = (unsigned char *)parser->mem->calloc(len + 1, sizeof(unsigned char));
311
+ if (!scan_string) {
312
+ return NULL;
313
+ }
314
+ memcpy(scan_string, string, len);
315
+ scan_string[len] = '\0';
316
+ mask_pipes_in_code(scan_string, len);
208
317
 
209
318
  row = (table_row *)parser->mem->calloc(1, sizeof(table_row));
210
319
  row->n_columns = 0;
211
320
  row->cells = NULL;
212
321
 
213
322
  // Scan past the (optional) leading pipe.
214
- offset = scan_table_cell_end(string, len, 0);
323
+ offset = scan_table_cell_end(scan_string, len, 0);
215
324
 
216
325
  // Parse the cells of the row. Stop if we reach the end of the input, or if we
217
326
  // cannot detect any more cells.
218
327
  while (offset < len && expect_more_cells) {
219
- cell_matched = scan_table_cell(string, len, offset);
220
- pipe_matched = scan_table_cell_end(string, len, offset + cell_matched);
328
+ cell_matched = scan_table_cell(scan_string, len, offset);
329
+ pipe_matched = scan_table_cell_end(scan_string, len, offset + cell_matched);
221
330
 
222
331
  if (cell_matched || pipe_matched) {
223
332
  // We are guaranteed to have a cell, since (1) either we found some
@@ -226,6 +335,7 @@ static table_row *row_from_string(cmark_syntax_extension *self,
226
335
  cmark_strbuf *cell_buf = unescape_pipes(parser->mem, string + offset,
227
336
  cell_matched);
228
337
  cmark_strbuf_trim(cell_buf);
338
+ replace_escaped_ltlt(parser->mem, cell_buf);
229
339
 
230
340
  node_cell *cell = append_row_cell(parser->mem, row);
231
341
  if (!cell) {
@@ -251,7 +361,7 @@ static table_row *row_from_string(cmark_syntax_extension *self,
251
361
  expect_more_cells = 1;
252
362
  } else {
253
363
  // We've scanned the last cell. Check if we have reached the end of the row
254
- row_end_offset = scan_table_row_end(string, len, offset);
364
+ row_end_offset = scan_table_row_end(scan_string, len, offset);
255
365
  offset += row_end_offset;
256
366
 
257
367
  // If the end of the row is not the end of the input,
@@ -263,7 +373,7 @@ static table_row *row_from_string(cmark_syntax_extension *self,
263
373
  free_row_cells(parser->mem, row);
264
374
 
265
375
  // Scan past the (optional) leading pipe.
266
- offset += scan_table_cell_end(string, len, offset);
376
+ offset += scan_table_cell_end(scan_string, len, offset);
267
377
 
268
378
  expect_more_cells = 1;
269
379
  } else {
@@ -277,6 +387,8 @@ static table_row *row_from_string(cmark_syntax_extension *self,
277
387
  row = NULL;
278
388
  }
279
389
 
390
+ parser->mem->free(scan_string);
391
+
280
392
  return row;
281
393
  }
282
394
 
@@ -410,6 +522,15 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self,
410
522
  header_cell->internal_offset = cell->internal_offset;
411
523
  header_cell->end_column = parent_container->start_column + cell->end_offset;
412
524
  cmark_node_set_string_content(header_cell, (char *) cell->buf->ptr);
525
+ /* Store raw content for colspan check (content may be cleared after inline parse) */
526
+ {
527
+ size_t len = cell->buf->size;
528
+ char *raw_copy = (char *)parser->mem->calloc(len + 1, 1);
529
+ if (raw_copy) {
530
+ memcpy(raw_copy, cell->buf->ptr, len);
531
+ cmark_node_set_user_data(header_cell, raw_copy);
532
+ }
533
+ }
413
534
  cmark_node_set_syntax_extension(header_cell, self);
414
535
  set_cell_index(header_cell, i);
415
536
  }
@@ -465,6 +586,15 @@ static cmark_node *try_opening_table_row(cmark_syntax_extension *self,
465
586
  node->internal_offset = cell->internal_offset;
466
587
  node->end_column = parent_container->start_column + cell->end_offset;
467
588
  cmark_node_set_string_content(node, (char *) cell->buf->ptr);
589
+ /* Store raw content for colspan check (content may be cleared after inline parse) */
590
+ {
591
+ size_t len = cell->buf->size;
592
+ char *raw_copy = (char *)parser->mem->calloc(len + 1, 1);
593
+ if (raw_copy) {
594
+ memcpy(raw_copy, cell->buf->ptr, len);
595
+ cmark_node_set_user_data(node, raw_copy);
596
+ }
597
+ }
468
598
  cmark_node_set_syntax_extension(node, self);
469
599
  set_cell_index(node, i);
470
600
  }
@@ -1091,6 +1091,32 @@ static cmark_node *check_open_blocks(cmark_parser *parser, cmark_chunk *input,
1091
1091
  case CMARK_NODE_PARAGRAPH:
1092
1092
  if (parser->blank)
1093
1093
  goto done;
1094
+ // Check if this line starts with a list marker (CommonMark spec: lists interrupt paragraphs)
1095
+ if (!parser->blank) {
1096
+ cmark_list *list_data = NULL;
1097
+ bufsize_t matched = parse_list_marker(
1098
+ parser->mem, input, parser->first_nonspace,
1099
+ true, // interrupts_paragraph = true
1100
+ &list_data);
1101
+ if (matched > 0) {
1102
+ // Found a list marker - close the paragraph
1103
+ parser->mem->free(list_data);
1104
+ goto done;
1105
+ }
1106
+ /* Definition list line (: or :: followed by space) interrupts paragraph
1107
+ * so extensions can open a definition list (e.g. Kramdown-style). */
1108
+ bufsize_t pos = parser->first_nonspace;
1109
+ if (pos < (bufsize_t)input->len && input->data[pos] == ':') {
1110
+ bufsize_t next = pos + 1;
1111
+ if (next < (bufsize_t)input->len && (input->data[next] == ' ' || input->data[next] == '\t'))
1112
+ goto done;
1113
+ if (next < (bufsize_t)input->len && input->data[next] == ':') {
1114
+ next++;
1115
+ if (next < (bufsize_t)input->len && (input->data[next] == ' ' || input->data[next] == '\t'))
1116
+ goto done;
1117
+ }
1118
+ }
1119
+ }
1094
1120
  break;
1095
1121
  case CMARK_NODE_FOOTNOTE_DEFINITION:
1096
1122
  if (!parse_footnote_definition_block_prefix(parser, input, container))
@@ -1334,6 +1360,34 @@ static void open_new_blocks(cmark_parser *parser, cmark_node **container,
1334
1360
  }
1335
1361
  }
1336
1362
 
1363
+ /* Apex: image and reference-definition lines should not lazy-continue into
1364
+ * blockquote paragraphs (e.g. "> quote" followed by "![][id]" on the next line). */
1365
+ static bool S_line_interrupts_blockquote_lazy(cmark_chunk *input, bufsize_t pos) {
1366
+ if (pos >= (bufsize_t)input->len)
1367
+ return false;
1368
+
1369
+ if (peek_at(input, pos) == '!' && pos + 1 < (bufsize_t)input->len &&
1370
+ peek_at(input, pos + 1) == '[')
1371
+ return true;
1372
+
1373
+ if (peek_at(input, pos) == '[') {
1374
+ bufsize_t i = pos + 1;
1375
+ while (i < (bufsize_t)input->len && input->data[i] != '\n' &&
1376
+ input->data[i] != '\r' && input->data[i] != ']') {
1377
+ i++;
1378
+ }
1379
+ if (i < (bufsize_t)input->len && input->data[i] == ']' &&
1380
+ i + 1 < (bufsize_t)input->len && input->data[i + 1] == ':') {
1381
+ bufsize_t j = i + 2;
1382
+ if (j < (bufsize_t)input->len &&
1383
+ (input->data[j] == ' ' || input->data[j] == '\t'))
1384
+ return true;
1385
+ }
1386
+ }
1387
+
1388
+ return false;
1389
+ }
1390
+
1337
1391
  static void add_text_to_container(cmark_parser *parser, cmark_node *container,
1338
1392
  cmark_node *last_matched_container,
1339
1393
  cmark_chunk *input) {
@@ -1374,7 +1428,8 @@ static void add_text_to_container(cmark_parser *parser, cmark_node *container,
1374
1428
  // the open paragraph.
1375
1429
  if (parser->current != last_matched_container &&
1376
1430
  container == last_matched_container && !parser->blank &&
1377
- S_type(parser->current) == CMARK_NODE_PARAGRAPH) {
1431
+ S_type(parser->current) == CMARK_NODE_PARAGRAPH &&
1432
+ !S_line_interrupts_blockquote_lazy(input, parser->first_nonspace)) {
1378
1433
  add_line(parser->current, input, parser);
1379
1434
  } else { // not a lazy continuation
1380
1435
  // Finalize any blocks that were not matched and set cur to container:
@@ -0,0 +1,38 @@
1
+ #ifndef CMARK_CONFIG_H
2
+ #define CMARK_CONFIG_H
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ #define HAVE_STDBOOL_H 1
9
+
10
+ #ifdef HAVE_STDBOOL_H
11
+ #include <stdbool.h>
12
+ #elif !defined(__cplusplus)
13
+ typedef char bool;
14
+ #endif
15
+
16
+ #define HAVE___BUILTIN_EXPECT 1
17
+
18
+ #define HAVE___ATTRIBUTE__ 1
19
+
20
+ #ifdef HAVE___ATTRIBUTE__
21
+ #define CMARK_ATTRIBUTE(list) __attribute__ (list)
22
+ #else
23
+ #define CMARK_ATTRIBUTE(list)
24
+ #endif
25
+
26
+ #ifndef CMARK_INLINE
27
+ #if defined(_MSC_VER) && !defined(__cplusplus)
28
+ #define CMARK_INLINE __inline
29
+ #else
30
+ #define CMARK_INLINE inline
31
+ #endif
32
+ #endif
33
+
34
+ #ifdef __cplusplus
35
+ }
36
+ #endif
37
+
38
+ #endif
@@ -43,7 +43,7 @@ typedef enum {
43
43
  FORMAT_LATEX
44
44
  } writer_format;
45
45
 
46
- void print_usage() {
46
+ void print_usage(void) {
47
47
  printf("Usage: cmark-gfm [FILE*]\n");
48
48
  printf("Options:\n");
49
49
  printf(" --to, -t FORMAT Specify output format (html, xml, man, "
@@ -298,6 +298,69 @@ Tables with embedded pipes could be tricky.
298
298
  </table>
299
299
  ````````````````````````````````
300
300
 
301
+ Code spans should not contribute table delimiters.
302
+
303
+ ```````````````````````````````` example
304
+ | a | b |
305
+ | --- | --- |
306
+ | `x | y` | z |
307
+ .
308
+ <table>
309
+ <thead>
310
+ <tr>
311
+ <th>a</th>
312
+ <th>b</th>
313
+ </tr>
314
+ </thead>
315
+ <tbody>
316
+ <tr>
317
+ <td><code>x | y</code></td>
318
+ <td>z</td>
319
+ </tr>
320
+ </tbody>
321
+ </table>
322
+ ````````````````````````````````
323
+
324
+ Multi-backtick code spans should not split on pipes.
325
+
326
+ ```````````````````````````````` example
327
+ | a | b |
328
+ | --- | --- |
329
+ | ``code | span`` | z |
330
+ | ```left | right``` | q |
331
+ .
332
+ <table>
333
+ <thead>
334
+ <tr>
335
+ <th>a</th>
336
+ <th>b</th>
337
+ </tr>
338
+ </thead>
339
+ <tbody>
340
+ <tr>
341
+ <td><code>code | span</code></td>
342
+ <td>z</td>
343
+ </tr>
344
+ <tr>
345
+ <td><code>left | right</code></td>
346
+ <td>q</td>
347
+ </tr>
348
+ </tbody>
349
+ </table>
350
+ ````````````````````````````````
351
+
352
+ Indented code lines should prevent lazy table detection.
353
+
354
+ ```````````````````````````````` example
355
+ | a | b |
356
+ code | with | pipes
357
+ | --- | --- |
358
+ .
359
+ <p>| a | b |
360
+ code | with | pipes
361
+ | --- | --- |</p>
362
+ ````````````````````````````````
363
+
301
364
  ### Oddly-formatted markers
302
365
 
303
366
  This shouldn't assert.
@@ -637,6 +700,12 @@ http://🍄.ga/ http://x🍄.ga/
637
700
  <p><a href="http://%F0%9F%8D%84.ga/">http://🍄.ga/</a> <a href="http://x%F0%9F%8D%84.ga/">http://x🍄.ga/</a></p>
638
701
  ````````````````````````````````
639
702
 
703
+ ```````````````````````````````` example
704
+ <a class="widget-shot js-lightbox" href="/assets/images/shots/macos/text-basic@2x.jpg"><img srcset="/assets/images/shots/macos/text-basic@2x.jpg 2x"></a> scyther@pokemon.com
705
+ .
706
+ <p><a class="widget-shot js-lightbox" href="/assets/images/shots/macos/text-basic@2x.jpg"><img srcset="/assets/images/shots/macos/text-basic@2x.jpg 2x"></a> <a href="mailto:scyther@pokemon.com">scyther@pokemon.com</a></p>
707
+ ````````````````````````````````
708
+
640
709
  ```````````````````````````````` example
641
710
  This shouldn't crash everything: (_A_@_.A
642
711
  .
@@ -0,0 +1,74 @@
1
+ # Generated by CMake, DO NOT EDIT
2
+
3
+ TARGETS:=
4
+ empty:=
5
+ space:= $(empty) $(empty)
6
+ spaceplus:= $(empty)\ $(empty)
7
+
8
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/CMakeLists.txt))
9
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/CMakeLists.txt))
10
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/CheckFileOffsetBits.cmake))
11
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/FindAsan.cmake))
12
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/extensions/CMakeLists.txt))
13
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/man/CMakeLists.txt))
14
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/src/CMakeLists.txt))
15
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/src/cmark-gfm_version.h.in))
16
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/src/config.h.in))
17
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/vendor/cmark-gfm/src/libcmark-gfm.pc.in))
18
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/xcode_build/CMakeFiles/4.2.3/CMakeCCompiler.cmake))
19
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/xcode_build/CMakeFiles/4.2.3/CMakeCXXCompiler.cmake))
20
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /Users/ttscoff/Desktop/Code/apex/xcode_build/CMakeFiles/4.2.3/CMakeSystem.cmake))
21
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeCInformation.cmake))
22
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeCXXInformation.cmake))
23
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake))
24
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeCommonLanguageInclude.cmake))
25
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeGenericSystem.cmake))
26
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeInitializeConfigs.cmake))
27
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeLanguageInformation.cmake))
28
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInformation.cmake))
29
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake))
30
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCCompilerFlag.cmake))
31
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCSourceCompiles.cmake))
32
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCSourceRuns.cmake))
33
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCXXCompilerFlag.cmake))
34
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCXXSourceCompiles.cmake))
35
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckCompilerFlag.cmake))
36
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckIncludeFile.cmake))
37
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckSourceCompiles.cmake))
38
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/CheckSymbolExists.cmake))
39
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Compiler/AppleClang-C.cmake))
40
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Compiler/AppleClang-CXX.cmake))
41
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake))
42
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Compiler/Clang.cmake))
43
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Compiler/GNU.cmake))
44
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/FindPackageHandleStandardArgs.cmake))
45
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/FindPackageMessage.cmake))
46
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/FindPkgConfig.cmake))
47
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/GNUInstallDirs.cmake))
48
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/GenerateExportHeader.cmake))
49
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/InstallRequiredSystemLibraries.cmake))
50
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CMakeCLinkerInformation.cmake))
51
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CMakeCXXLinkerInformation.cmake))
52
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CMakeCommonLinkerInformation.cmake))
53
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CheckCompilerFlag.cmake))
54
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CheckFlagCommonConfig.cmake))
55
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CheckSourceCompiles.cmake))
56
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Internal/CheckSourceRuns.cmake))
57
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Linker/AppleClang-C.cmake))
58
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Linker/AppleClang-CXX.cmake))
59
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Linker/AppleClang.cmake))
60
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake))
61
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Apple-AppleClang-CXX.cmake))
62
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Apple-Clang-C.cmake))
63
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Apple-Clang-CXX.cmake))
64
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Apple-Clang.cmake))
65
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Darwin-Initialize.cmake))
66
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Darwin.cmake))
67
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang-C.cmake))
68
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang-CXX.cmake))
69
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/Linker/Apple-AppleClang.cmake))
70
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/Platform/UnixPaths.cmake))
71
+ TARGETS += $(subst $(space),$(spaceplus),$(wildcard /opt/homebrew/share/cmake/Modules/exportheader.cmake.in))
72
+
73
+ /Users/ttscoff/Desktop/Code/apex/xcode_build/CMakeFiles/cmake.check_cache: $(TARGETS)
74
+ /opt/homebrew/bin/cmake -S/Users/ttscoff/Desktop/Code/apex -B/Users/ttscoff/Desktop/Code/apex/xcode_build
@@ -0,0 +1,22 @@
1
+ # CMake generated Testfile for
2
+ # Source directory: /Users/ttscoff/Desktop/Code/apex
3
+ # Build directory: /Users/ttscoff/Desktop/Code/apex/xcode_build
4
+ #
5
+ # This file includes the relevant testing commands required for
6
+ # testing this directory and lists subdirectories to be tested as well.
7
+ if(CTEST_CONFIGURATION_TYPE MATCHES "^([Dd][Ee][Bb][Uu][Gg])$")
8
+ add_test(apex_tests "/Users/ttscoff/Desktop/Code/apex/xcode_build/Debug/apex_test_runner")
9
+ set_tests_properties(apex_tests PROPERTIES WORKING_DIRECTORY "/Users/ttscoff/Desktop/Code/apex" _BACKTRACE_TRIPLES "/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;357;add_test;/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;0;")
10
+ elseif(CTEST_CONFIGURATION_TYPE MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$")
11
+ add_test(apex_tests "/Users/ttscoff/Desktop/Code/apex/xcode_build/Release/apex_test_runner")
12
+ set_tests_properties(apex_tests PROPERTIES WORKING_DIRECTORY "/Users/ttscoff/Desktop/Code/apex" _BACKTRACE_TRIPLES "/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;357;add_test;/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;0;")
13
+ elseif(CTEST_CONFIGURATION_TYPE MATCHES "^([Mm][Ii][Nn][Ss][Ii][Zz][Ee][Rr][Ee][Ll])$")
14
+ add_test(apex_tests "/Users/ttscoff/Desktop/Code/apex/xcode_build/MinSizeRel/apex_test_runner")
15
+ set_tests_properties(apex_tests PROPERTIES WORKING_DIRECTORY "/Users/ttscoff/Desktop/Code/apex" _BACKTRACE_TRIPLES "/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;357;add_test;/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;0;")
16
+ elseif(CTEST_CONFIGURATION_TYPE MATCHES "^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$")
17
+ add_test(apex_tests "/Users/ttscoff/Desktop/Code/apex/xcode_build/RelWithDebInfo/apex_test_runner")
18
+ set_tests_properties(apex_tests PROPERTIES WORKING_DIRECTORY "/Users/ttscoff/Desktop/Code/apex" _BACKTRACE_TRIPLES "/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;357;add_test;/Users/ttscoff/Desktop/Code/apex/CMakeLists.txt;0;")
19
+ else()
20
+ add_test(apex_tests NOT_AVAILABLE)
21
+ endif()
22
+ subdirs("vendor/cmark-gfm")
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>BuildMachineOSBuild</key>
6
+ <string>25E5223i</string>
7
+ <key>CFBundleDevelopmentRegion</key>
8
+ <string>en</string>
9
+ <key>CFBundleExecutable</key>
10
+ <string>Apex</string>
11
+ <key>CFBundleIdentifier</key>
12
+ <string>com.brettterpstra.apex</string>
13
+ <key>CFBundleInfoDictionaryVersion</key>
14
+ <string>6.0</string>
15
+ <key>CFBundleName</key>
16
+ <string>Apex</string>
17
+ <key>CFBundlePackageType</key>
18
+ <string>FMWK</string>
19
+ <key>CFBundleSupportedPlatforms</key>
20
+ <array>
21
+ <string>MacOSX</string>
22
+ </array>
23
+ <key>DTCompiler</key>
24
+ <string>com.apple.compilers.llvm.clang.1_0</string>
25
+ <key>DTPlatformBuild</key>
26
+ <string>25C58</string>
27
+ <key>DTPlatformName</key>
28
+ <string>macosx</string>
29
+ <key>DTPlatformVersion</key>
30
+ <string>26.2</string>
31
+ <key>DTSDKBuild</key>
32
+ <string>25C58</string>
33
+ <key>DTSDKName</key>
34
+ <string>macosx26.2</string>
35
+ <key>DTXcode</key>
36
+ <string>2630</string>
37
+ <key>DTXcodeBuild</key>
38
+ <string>17C529</string>
39
+ <key>LSMinimumSystemVersion</key>
40
+ <string>26.2</string>
41
+ <key>NSHumanReadableCopyright</key>
42
+ <string>Copyright © 2025 Brett Terpstra. All rights reserved.</string>
43
+ </dict>
44
+ </plist>