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,11 @@
1
+ ---
2
+ indices: false
3
+ wikilinks: true
4
+ pretty: true
5
+ standalone: true
6
+ title: Test Document from File
7
+ csl: test.csl
8
+ id-format: kramdown
9
+ link-citations: true
10
+ suppress-bibliography: false
11
+ ---
@@ -0,0 +1,96 @@
1
+ # Basic Heading
2
+
3
+ ## Heading with Spaces
4
+
5
+ ### Multiple Spaces Here
6
+
7
+ #### Heading-with-dash
8
+
9
+ ##### Heading_with_underscore
10
+
11
+ ###### Heading.with.dots
12
+
13
+ # Leading Space Test
14
+
15
+ ## Trailing Space Test
16
+
17
+ ### Mixed Case Heading
18
+
19
+ #### ALL CAPS HEADING
20
+
21
+ # Punctuation Test, Here!
22
+
23
+ ## More Punctuation: Colons; Semicolons?
24
+
25
+ ### Special Characters @#$%^&*
26
+
27
+ #### Parentheses (and brackets) [test]
28
+
29
+ ##### Quotes "double" and 'single'
30
+
31
+ ###### Backticks `code` in heading
32
+
33
+ # Em Dash — Test
34
+
35
+ ## En Dash – Test
36
+
37
+ ### Mixed Dashes — and – here
38
+
39
+ # Diacritics Émoji Support
40
+
41
+ ## More Diacritics: Café, naïve, résumé
42
+
43
+ ### Accented Characters: àáâãäå
44
+
45
+ #### Cyrillic: Привет
46
+
47
+ ##### Chinese: 你好
48
+
49
+ ###### Japanese: こんにちは
50
+
51
+ # Numbers 123 in Heading
52
+
53
+ ## Math Symbols: 2+2=4
54
+
55
+ ### Currency: $100, €50, £25
56
+
57
+ # Leading Dash -Test
58
+
59
+ ## Trailing Dash Test-
60
+
61
+ ### Multiple Dashes -- Here
62
+
63
+ #### Triple Dash --- Test
64
+
65
+ # Empty After Processing
66
+
67
+ ## !@#$%^&*()
68
+
69
+ ### Only Special Characters
70
+
71
+ # Very Long Heading That Should Still Generate a Valid ID Even When It Contains Many Words and Characters
72
+
73
+ ## Heading with URL: https://example.com/path
74
+
75
+ ### Email in heading: user@example.com
76
+
77
+ # Heading with Markdown *bold* and _italic_
78
+
79
+ ## Heading with `code` span
80
+
81
+ ### Heading with [link](url)
82
+
83
+ #### Heading with ![image](img.png)
84
+
85
+ # Heading with HTML <tag>
86
+
87
+ ## Mixed: Heading—with—dashes and spaces
88
+
89
+ ### Complex: Hello, World! (Test) [2024]
90
+
91
+ #### Edge Case: Multiple Spaces Everywhere
92
+
93
+ ##### Another: Test---Multiple---Dashes
94
+
95
+ ###### Final: Special@#$%Chars
96
+
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Test Document with Citations
3
+ bibliography: test_refs.bib
4
+ ---
5
+
6
+ # Test Document with Citations
7
+
8
+ This is a test document with various citation styles.
9
+
10
+ ## Pandoc Citations
11
+
12
+ Blah blah [@doe99; @smith2000; @smith2004].
13
+
14
+ See @doe99, pp. 33-35 and *passim*.
15
+
16
+ Smith says blah [-@smith04].
17
+
18
+ @smith04 says blah.
19
+
20
+ @smith04 [p. 33] says blah.
21
+
22
+ ## MultiMarkdown Citations
23
+
24
+ This is a statement that should be attributed to its
25
+ source[p. 23][#Doe:2006].
26
+
27
+ This is a statement that should be attributed to its
28
+ source[][#Doe:2006].
29
+
30
+ As per Doe.[#John Doe. *A Totally Fake Book 1*. Vanity
31
+ Press, 2006.]
32
+
33
+ ## mmark Citations
34
+
35
+ This references [@RFC2535] and [@!RFC1034] (normative).
36
+
37
+ Multiple citations: [@RFC1034;@RFC1035].
38
+
39
+ Combined reference: [@RFC1034@STD3].
40
+
41
+ ## References Section
42
+
43
+ <!-- REFERENCES -->
@@ -0,0 +1,12 @@
1
+ Term with [inline link](https://example.com)
2
+ : Definition with inline link
3
+
4
+ Term with [reference link][ref]
5
+ : Definition with reference link
6
+
7
+ [ref]: https://example.com "Reference title"
8
+
9
+ Term with [shortcut reference][]
10
+ : Definition with shortcut reference
11
+
12
+ [shortcut reference]: https://example.org
@@ -0,0 +1,53 @@
1
+ # Test Document with mmark Index Syntax
2
+
3
+ This is a test document to demonstrate mmark index syntax.
4
+
5
+ ## Introduction
6
+
7
+ This document contains various topics that will be indexed.
8
+ We have protocols (!Protocol) and implementations
9
+ (!Implementation).
10
+
11
+ ## Section on HTTP
12
+
13
+ HTTP (!HTTP) is a protocol (!Protocol) used for web
14
+ communication. The HTTP protocol (!Protocol) has several
15
+ versions.
16
+
17
+ ### HTTP/1.1
18
+
19
+ HTTP/1.1 (!HTTP, HTTP/1.1) is a common version of the
20
+ protocol (!Protocol).
21
+
22
+ ### HTTP/2
23
+
24
+ HTTP/2 (!HTTP, HTTP/2) introduced multiplexing.
25
+
26
+ ## Section on Security
27
+
28
+ Security (!Security) is important. We discuss encryption
29
+ (!Encryption) and authentication (!Authentication).
30
+
31
+ ### Encryption Methods
32
+
33
+ Symmetric encryption (!Encryption, Symmetric) uses the same
34
+ key for encryption and decryption.
35
+
36
+ Asymmetric encryption (!Encryption, Asymmetric) uses
37
+ different keys.
38
+
39
+ ## Primary Index Entry
40
+
41
+ This section discusses the primary topic (!!Primary Topic,
42
+ Sub Topic).
43
+
44
+ ## Section-Level Index
45
+
46
+ (!Section Index Entry)
47
+
48
+ This entire section should be indexed as "Section Index
49
+ Entry".
50
+
51
+ ## Conclusion
52
+
53
+ This concludes our test of index syntax.
@@ -0,0 +1,37 @@
1
+ # Test Document with TextIndex Syntax
2
+
3
+ This is a test document to demonstrate TextIndex syntax.
4
+
5
+ ## Introduction
6
+
7
+ Most mechanical keyboard firmware{^} supports the use of
8
+ [key combinations]{^}.
9
+
10
+ ## Protocols
11
+
12
+ HTTP{^} is a protocol{^} used for web communication. The
13
+ HTTP protocol{^} has several versions.
14
+
15
+ ### HTTP/1.1
16
+
17
+ HTTP/1.1{^} is a common version of the protocol{^}.
18
+
19
+ ### HTTP/2
20
+
21
+ HTTP/2{^} introduced multiplexing.
22
+
23
+ ## Security
24
+
25
+ Security{^} is important. We discuss encryption{^} and
26
+ authentication{^}.
27
+
28
+ ### Encryption Methods
29
+
30
+ Symmetric encryption{^} uses the same key for encryption and
31
+ decryption.
32
+
33
+ Asymmetric encryption{^} uses different keys.
34
+
35
+ ## Conclusion
36
+
37
+ This concludes our test of TextIndex syntax.
@@ -0,0 +1,93 @@
1
+ This table uses Pandoc captions and attributes
2
+
3
+ | Key | Value |
4
+ | --- | :---: |
5
+ | one | 1 |
6
+ | two | 2 |
7
+
8
+ : Key value table {:.testing}
9
+
10
+
11
+
12
+ This table combines both rowspan and colspan features:
13
+
14
+ [Employee Performance Q4 2025]
15
+ | Department | Employee | Q1-Q2 Average | Q3 | Q4 | Overall |
16
+ | ----------- | -------- | ------------- | ------ | --- | ------- |
17
+ | Engineering | Alice | 93.5 | 94 | 96 | 94.25 |
18
+ | ^^ | Bob | 89.0 | 87 | 91 | 89.00 |
19
+ | Marketing | Charlie | 92.0 | Absent | | 92.00 |
20
+ | Sales | Diana | 87.5 | 88 | 90 | 88.50 |
21
+ | ^^ | Eve | 93.0 | 95 | 93 | 93.50 |
22
+ {: .performance-table #q4-results}
23
+
24
+ More colspan testing:
25
+
26
+ | | This | Has | Colspans |
27
+ | ----: | ------- | ----- | -------------- |
28
+ | row 1 | | blank | cell |
29
+ | row 2 | colspan |||
30
+ | row 3 | cell || &larr; colspan |
31
+ | row 4 | forced colspan | << | &larr; colspan |
32
+ | row 5 | raw \<< | \<< | No colspan |
33
+
34
+ : Just some colspan testing
35
+
36
+ ---
37
+
38
+ Use `^^` to merge cells vertically (rowspan):
39
+
40
+ | Name | Department | Project | Status |
41
+ | ----- | ----------- | -------- | ------ |
42
+ | Frank | Malarkey | Alpha | Active |
43
+ | ^^ | ^^ | Beta | ^^ |
44
+ | ^^ | ^^ | Gamma | ^^ |
45
+ | Ron | Advertising | Campaign | Active |
46
+ | Chuck | Hooliganism | Q4 | Active |
47
+
48
+ ---
49
+
50
+
51
+ | Department | Employee | Q1-Q2 Average | Q3 | Q4 | Overall |
52
+ | ----------- | -------- | ------------- | ------- | ------- | --------- |
53
+ | Engineering | Alice | 93.5 | 94 | 96 | 94.25 |
54
+ | Foogling | Jake | 60.3 | 20 | 20 | 30.1 |
55
+ | boggling | 24 | | | | |
56
+ | ===== | ======= | ========= | ===== | ======= | ========= |
57
+ | footer | row | with | colspan | | |
58
+
59
+ [colspans]
60
+ | header | | |
61
+ | ------ | ---- | ---- |
62
+ | data | data | data |
63
+ | data | data | data |
64
+ | ==== | === | === |
65
+ | footer | | |
66
+
67
+
68
+ | h1 | h2 | h3 |
69
+ | --- | :---: | --- |
70
+ | d1 | d2 | d3 |
71
+ | d1 | d2 | d3 |
72
+ | === | === | === |
73
+ | d-4 | d-5 | d-6 |
74
+ [table with footer]
75
+
76
+ | h1 | h2 asdfasdf asdf | h3 |
77
+ | --- | :--------------: | --- |
78
+ | d1 | : d2 | d3 |
79
+ | d1 | d2 : | d3 |
80
+
81
+ Table: Table with Pandoc caption
82
+
83
+
84
+ | ----: | :-----: | :----- |
85
+ | aa | bb | cc |
86
+ | 1 | 2 | 3 |
87
+
88
+ Table: Table without header row
89
+
90
+ [Relaxed table]
91
+ | a | b | c |
92
+ | 1d | 2b | 3c |
93
+ | data 1 | data 2 | data 3 |
@@ -0,0 +1,38 @@
1
+ # Inline Tables Test
2
+
3
+ Regular paragraph before.
4
+
5
+ ```table
6
+ header 1,header 2,header 3
7
+ data 1,data 2,data 3
8
+ ,,data 2c
9
+
10
+ ```
11
+
12
+ Paragraph between.
13
+
14
+ ```table
15
+ col1\tcol2\tcol3
16
+ val1\tval2\tval3
17
+
18
+ ```
19
+
20
+ ```table
21
+ this is not,actually a table header
22
+ but has no delimiter on second line
23
+
24
+ ```
25
+
26
+ <!--TABLE-->
27
+ one,two,three
28
+ four,five,six
29
+
30
+ <!--TABLE-->
31
+ alpha\tbeta\tgamma
32
+ delta\tepsilon\tzeta
33
+
34
+ <!--TABLE-->
35
+
36
+ No data here; should be unchanged.
37
+
38
+
@@ -0,0 +1,12 @@
1
+ | one | two |
2
+ | 1 | 2 |
3
+
4
+
5
+ one | two | three
6
+ 1 | 2 | 3
7
+
8
+ A paragraph containing just one | symbol.
9
+
10
+ | one | two |
11
+ |-----|----:|
12
+ | 1 | 2 |
@@ -0,0 +1,15 @@
1
+ # Tables
2
+
3
+ Test this table.
4
+ | Col1 | Col2 |
5
+ |------|------|
6
+ | A | B |
7
+
8
+ : My Table {#table-id .highlight}
9
+
10
+ Test this table.
11
+ | Col1 | Col2 |
12
+ |------|------|
13
+ | A | B |
14
+
15
+ Table: My Table {#table-id2 .highlight}
@@ -0,0 +1,15 @@
1
+ # Tables
2
+
3
+ Test this table.
4
+ | Col1 | Col2 |
5
+ |------|------|
6
+ | A | B |
7
+
8
+ : My Table {#table-id .highlight}
9
+
10
+ Test this table.
11
+ | Col1 | Col2 |
12
+ |------|------|
13
+ | A | B |
14
+
15
+ Table: My Table {#table-id2 .highlight}
@@ -0,0 +1,105 @@
1
+ #!/bin/bash
2
+ # Generate GFM-compliant header IDs using available tools
3
+ # This script tries multiple tools to generate header IDs for comparison
4
+
5
+ TEST_FILE="tests/gfm_header_id_test.md"
6
+
7
+ echo "=== Generating Header IDs with Available Tools ==="
8
+ echo ""
9
+
10
+ # Extract headings from test file
11
+ grep -E '^#+ ' "$TEST_FILE" | sed 's/^#* //' > /tmp/headings.txt
12
+
13
+ # Try pandoc
14
+ if command -v pandoc &> /dev/null; then
15
+ echo "Using Pandoc:"
16
+ cat "$TEST_FILE" | pandoc -f gfm -t html 2>&1 | grep -E '<h[1-6] id=' | sed 's/.*id="\([^"]*\)".*/\1/' > /tmp/pandoc_ids.txt
17
+ echo "Generated $(wc -l < /tmp/pandoc_ids.txt) IDs"
18
+ echo ""
19
+ fi
20
+
21
+ # Try comrak
22
+ if command -v comrak &> /dev/null; then
23
+ echo "Using Comrak:"
24
+ # Comrak uses anchor tags with IDs: <a ... id="header-id"></a>
25
+ cat "$TEST_FILE" | comrak --gfm --header-ids "" 2>&1 | grep -E 'id="[^"]*"' | sed 's/.*id="\([^"]*\)".*/\1/' > /tmp/comrak_ids.txt
26
+ if [ -f /tmp/comrak_ids.txt ] && [ -s /tmp/comrak_ids.txt ]; then
27
+ echo "Generated $(wc -l < /tmp/comrak_ids.txt) IDs"
28
+ else
29
+ echo "Generated 0 IDs (comrak may not generate IDs in this format)"
30
+ fi
31
+ echo ""
32
+ fi
33
+
34
+ # Our implementation
35
+ echo "Using Apex:"
36
+ cat "$TEST_FILE" | ./build/apex --mode gfm 2>&1 | grep -E '<h[1-6] id=' | sed 's/.*id="\([^"]*\)".*/\1/' > /tmp/apex_ids.txt
37
+ echo "Generated $(wc -l < /tmp/apex_ids.txt) IDs"
38
+ echo ""
39
+
40
+ # Show comparison if we have multiple tools
41
+ echo "=== Comparison ==="
42
+ HEADERS="Heading"
43
+ COLS="/tmp/headings.txt"
44
+
45
+ if [ -f /tmp/pandoc_ids.txt ] && [ -s /tmp/pandoc_ids.txt ]; then
46
+ HEADERS="$HEADERS|Pandoc"
47
+ COLS="$COLS /tmp/pandoc_ids.txt"
48
+ fi
49
+
50
+ if [ -f /tmp/comrak_ids.txt ] && [ -s /tmp/comrak_ids.txt ]; then
51
+ HEADERS="$HEADERS|Comrak"
52
+ COLS="$COLS /tmp/comrak_ids.txt"
53
+ fi
54
+
55
+ if [ -f /tmp/marked_ids.txt ] && [ -s /tmp/marked_ids.txt ]; then
56
+ HEADERS="$HEADERS|Marked"
57
+ COLS="$COLS /tmp/marked_ids.txt"
58
+ fi
59
+
60
+ HEADERS="$HEADERS|Apex"
61
+ COLS="$COLS /tmp/apex_ids.txt"
62
+
63
+ echo "$HEADERS"
64
+ echo "$(echo "$HEADERS" | sed 's/[^|]/-/g')"
65
+ paste -d '|' $COLS | head -50
66
+ echo ""
67
+
68
+ # Try marked (JavaScript) with gfm-heading-id plugin if available
69
+ if command -v node &> /dev/null && npm list -g marked-gfm-heading-id &> /dev/null; then
70
+ echo "Using Marked (JavaScript) with GFM Heading ID plugin:"
71
+ # Find the global node_modules path
72
+ NODE_PATH=$(npm root -g)
73
+ node -e "
74
+ const fs = require('fs');
75
+ const path = require('path');
76
+ const { marked } = require('$NODE_PATH/marked');
77
+ const { gfmHeadingId } = require('$NODE_PATH/marked-gfm-heading-id');
78
+ marked.use(gfmHeadingId());
79
+ const text = fs.readFileSync('$TEST_FILE', 'utf8');
80
+ const html = marked(text);
81
+ const ids = html.match(/<h[1-6] id=\"([^\"]+)\"/g) || [];
82
+ ids.forEach(id => {
83
+ const match = id.match(/id=\"([^\"]+)\"/);
84
+ if (match) console.log(match[1]);
85
+ });
86
+ " > /tmp/marked_ids.txt 2>/dev/null
87
+ if [ -f /tmp/marked_ids.txt ] && [ -s /tmp/marked_ids.txt ]; then
88
+ echo "Generated $(wc -l < /tmp/marked_ids.txt) IDs"
89
+ echo ""
90
+ else
91
+ echo "Generated 0 IDs"
92
+ echo ""
93
+ fi
94
+ fi
95
+
96
+ echo ""
97
+ echo "=== Summary ==="
98
+ echo "Available tools tested:"
99
+ [ -f /tmp/pandoc_ids.txt ] && [ -s /tmp/pandoc_ids.txt ] && echo " ✓ Pandoc"
100
+ [ -f /tmp/comrak_ids.txt ] && [ -s /tmp/comrak_ids.txt ] && echo " ✓ Comrak"
101
+ [ -f /tmp/marked_ids.txt ] && [ -s /tmp/marked_ids.txt ] && echo " ✓ Marked (JavaScript)"
102
+ echo " ✓ Apex (our implementation)"
103
+ echo ""
104
+ echo "Note: GitHub's API doesn't return header IDs."
105
+
@@ -0,0 +1,143 @@
1
+ #!/bin/sh
2
+ # Generate ial_demo.html from ial_demo.md
3
+
4
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5
+ APEX_BIN="$SCRIPT_DIR/../build/apex"
6
+ MD_FILE="$SCRIPT_DIR/ial_demo.md"
7
+ HTML_FILE="$SCRIPT_DIR/ial_demo.html"
8
+
9
+ # Check if apex binary exists
10
+ if [ ! -f "$APEX_BIN" ]; then
11
+ echo "Error: apex binary not found at $APEX_BIN" >&2
12
+ echo "Please build apex first with: make -C build" >&2
13
+ exit 1
14
+ fi
15
+
16
+ # Generate HTML content
17
+ HTML_CONTENT=$("$APEX_BIN" "$MD_FILE" 2>&1)
18
+ if [ $? -ne 0 ]; then
19
+ echo "Error: Failed to generate HTML from markdown" >&2
20
+ exit 1
21
+ fi
22
+
23
+ # Create the complete HTML file
24
+ cat > "$HTML_FILE" << 'EOF'
25
+ <!DOCTYPE html>
26
+ <html lang="en">
27
+ <head>
28
+ <meta charset="UTF-8">
29
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
30
+ <title>IAL Demo - Attribute Inspector</title>
31
+ <style>
32
+ body {
33
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
34
+ line-height: 1.6;
35
+ max-width: 900px;
36
+ margin: 0 auto;
37
+ padding: 20px;
38
+ background-color: #f5f5f5;
39
+ }
40
+
41
+ .content {
42
+ background: white;
43
+ padding: 30px;
44
+ border-radius: 8px;
45
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
46
+ }
47
+
48
+ /* Style for elements with attributes - add visual indicator */
49
+ [class]:hover,
50
+ [id]:hover {
51
+ outline: 2px solid #4CAF50;
52
+ outline-offset: 2px;
53
+ background-color: rgba(76, 175, 80, 0.1);
54
+ transition: background-color 0.2s;
55
+ }
56
+ </style>
57
+ <script>
58
+ // Add tooltips showing all attributes on hover
59
+ document.addEventListener('DOMContentLoaded', function() {
60
+ // Create tooltip element
61
+ const tooltip = document.createElement('div');
62
+ tooltip.id = 'attribute-tooltip';
63
+ tooltip.style.cssText = 'position: absolute; background: #333; color: white; padding: 8px 12px; border-radius: 4px; font-size: 12px; font-family: "Courier New", monospace; z-index: 10000; pointer-events: none; opacity: 0; transition: opacity 0.2s; box-shadow: 0 2px 8px rgba(0,0,0,0.3); max-width: 400px; word-wrap: break-word; white-space: normal; line-height: 1.4;';
64
+ document.body.appendChild(tooltip);
65
+
66
+ // Function to get all attributes as a formatted string
67
+ function getAttributesString(el) {
68
+ const attrs = [];
69
+ if (el.id) attrs.push('id="' + el.id + '"');
70
+ if (el.className) attrs.push('class="' + el.className + '"');
71
+ for (let i = 0; i < el.attributes.length; i++) {
72
+ const attr = el.attributes[i];
73
+ if (attr.name !== 'id' && attr.name !== 'class' && !attr.name.startsWith('data-apex-')) {
74
+ attrs.push(attr.name + '="' + attr.value + '"');
75
+ }
76
+ }
77
+ return attrs.length > 0 ? attrs.join(' ') : 'No attributes';
78
+ }
79
+
80
+ // Add hover handlers to all elements with attributes
81
+ const elementsWithAttrs = document.querySelectorAll('[class], [id]');
82
+ elementsWithAttrs.forEach(el => {
83
+ // Skip the tooltip itself and elements inside code blocks
84
+ if (el.id === 'attribute-tooltip' || el.closest('code') || el.closest('pre')) {
85
+ return;
86
+ }
87
+
88
+ el.addEventListener('mouseenter', function(e) {
89
+ const attrs = getAttributesString(this);
90
+ const tagName = this.tagName.toLowerCase();
91
+ tooltip.innerHTML = '<strong>&lt;' + tagName + '</strong> ' +
92
+ (attrs !== 'No attributes' ? attrs : '<em>' + attrs + '</em>') +
93
+ '<strong>&gt;</strong>';
94
+ tooltip.style.opacity = '1';
95
+
96
+ const rect = this.getBoundingClientRect();
97
+ let left = rect.left + window.scrollX;
98
+ let top = rect.top + window.scrollY - tooltip.offsetHeight - 8;
99
+
100
+ // Position tooltip
101
+ tooltip.style.left = left + 'px';
102
+ tooltip.style.top = top + 'px';
103
+
104
+ // Adjust if tooltip goes off screen
105
+ setTimeout(() => {
106
+ const tooltipRect = tooltip.getBoundingClientRect();
107
+ if (tooltipRect.left < 0) {
108
+ tooltip.style.left = '10px';
109
+ }
110
+ if (tooltipRect.top < 0) {
111
+ tooltip.style.top = (rect.bottom + window.scrollY + 8) + 'px';
112
+ }
113
+ if (tooltipRect.right > window.innerWidth) {
114
+ tooltip.style.left = (window.innerWidth - tooltipRect.width - 10) + 'px';
115
+ }
116
+ }, 0);
117
+ });
118
+
119
+ el.addEventListener('mouseleave', function() {
120
+ tooltip.style.opacity = '0';
121
+ });
122
+ });
123
+
124
+ console.log('Attribute inspector loaded. Hover over elements with attributes to see them.');
125
+ });
126
+ </script>
127
+ </head>
128
+ <body>
129
+ <div class="content">
130
+ EOF
131
+
132
+ # Append the generated HTML content
133
+ echo "$HTML_CONTENT" >> "$HTML_FILE"
134
+
135
+ # Close the HTML
136
+ cat >> "$HTML_FILE" << 'EOF'
137
+ </div>
138
+ </body>
139
+ </html>
140
+ EOF
141
+
142
+ echo "Generated $HTML_FILE"
143
+