@aquera/nile-elements 0.0.121 → 0.0.123

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 (510) hide show
  1. package/README.md +8 -0
  2. package/dist/abap-511af2a5.cjs.js +2 -0
  3. package/dist/abap-511af2a5.cjs.js.map +1 -0
  4. package/dist/abap-f2ab40d0.esm.js +1 -0
  5. package/dist/{angular-ts-32bbcd01.cjs.js → angular-ts-a70761c6.cjs.js} +2 -2
  6. package/dist/{angular-ts-32bbcd01.cjs.js.map → angular-ts-a70761c6.cjs.js.map} +1 -1
  7. package/dist/cairo-014ad724.cjs.js +2 -0
  8. package/dist/cairo-014ad724.cjs.js.map +1 -0
  9. package/dist/cairo-9be40999.esm.js +1 -0
  10. package/dist/catppuccin-frappe-52a52bb1.cjs.js +2 -0
  11. package/dist/catppuccin-frappe-52a52bb1.cjs.js.map +1 -0
  12. package/dist/catppuccin-frappe-dbc3161e.esm.js +1 -0
  13. package/dist/catppuccin-latte-d8a0f6a8.cjs.js +2 -0
  14. package/dist/catppuccin-latte-d8a0f6a8.cjs.js.map +1 -0
  15. package/dist/catppuccin-latte-e7591143.esm.js +1 -0
  16. package/dist/catppuccin-macchiato-19a7795e.cjs.js +2 -0
  17. package/dist/catppuccin-macchiato-19a7795e.cjs.js.map +1 -0
  18. package/dist/catppuccin-macchiato-283b424a.esm.js +1 -0
  19. package/dist/catppuccin-mocha-165e830c.esm.js +1 -0
  20. package/dist/catppuccin-mocha-9f9ec5f6.cjs.js +2 -0
  21. package/dist/catppuccin-mocha-9f9ec5f6.cjs.js.map +1 -0
  22. package/dist/cobol-8517cfc1.esm.js +1 -0
  23. package/dist/cobol-922d57ed.cjs.js +2 -0
  24. package/dist/cobol-922d57ed.cjs.js.map +1 -0
  25. package/dist/{cpp-c2442fe2.cjs.js → cpp-8812199e.cjs.js} +2 -2
  26. package/dist/{cpp-c2442fe2.cjs.js.map → cpp-8812199e.cjs.js.map} +1 -1
  27. package/dist/{crystal-1913e34d.cjs.js → crystal-5458e62a.cjs.js} +2 -2
  28. package/dist/{crystal-1913e34d.cjs.js.map → crystal-5458e62a.cjs.js.map} +1 -1
  29. package/dist/{edge-ef9e682b.cjs.js → edge-cb04b11b.cjs.js} +2 -2
  30. package/dist/{edge-ef9e682b.cjs.js.map → edge-cb04b11b.cjs.js.map} +1 -1
  31. package/dist/{elm-7fd07d47.cjs.js → elm-53a0b5b4.cjs.js} +2 -2
  32. package/dist/{elm-7fd07d47.cjs.js.map → elm-53a0b5b4.cjs.js.map} +1 -1
  33. package/dist/{erb-c813c1f2.cjs.js → erb-1bc4721c.cjs.js} +2 -2
  34. package/dist/{erb-c813c1f2.cjs.js.map → erb-1bc4721c.cjs.js.map} +1 -1
  35. package/dist/{fortran-fixed-form-c39bf051.cjs.js → fortran-fixed-form-00a9d08f.cjs.js} +2 -2
  36. package/dist/{fortran-fixed-form-c39bf051.cjs.js.map → fortran-fixed-form-00a9d08f.cjs.js.map} +1 -1
  37. package/dist/{fsharp-ba007c9c.cjs.js → fsharp-661f4f18.cjs.js} +2 -2
  38. package/dist/{fsharp-ba007c9c.cjs.js.map → fsharp-661f4f18.cjs.js.map} +1 -1
  39. package/dist/{gdresource-f3068367.cjs.js → gdresource-8fb6a6ad.cjs.js} +2 -2
  40. package/dist/{gdresource-f3068367.cjs.js.map → gdresource-8fb6a6ad.cjs.js.map} +1 -1
  41. package/dist/{git-commit-372b638c.cjs.js → git-commit-9373b48b.cjs.js} +2 -2
  42. package/dist/{git-commit-372b638c.cjs.js.map → git-commit-9373b48b.cjs.js.map} +1 -1
  43. package/dist/{git-rebase-2cc6f2a3.cjs.js → git-rebase-c3fa2bb9.cjs.js} +2 -2
  44. package/dist/{git-rebase-2cc6f2a3.cjs.js.map → git-rebase-c3fa2bb9.cjs.js.map} +1 -1
  45. package/dist/go-85139440.esm.js +1 -0
  46. package/dist/go-d5ed1b82.cjs.js +2 -0
  47. package/dist/go-d5ed1b82.cjs.js.map +1 -0
  48. package/dist/{graphql-74f146e1.cjs.js → graphql-1541cb3c.cjs.js} +2 -2
  49. package/dist/{graphql-74f146e1.cjs.js.map → graphql-1541cb3c.cjs.js.map} +1 -1
  50. package/dist/{handlebars-864fcb12.cjs.js → handlebars-39ab86cd.cjs.js} +2 -2
  51. package/dist/{handlebars-864fcb12.cjs.js.map → handlebars-39ab86cd.cjs.js.map} +1 -1
  52. package/dist/{http-08501497.cjs.js → http-1cf9a3de.cjs.js} +2 -2
  53. package/dist/{http-08501497.cjs.js.map → http-1cf9a3de.cjs.js.map} +1 -1
  54. package/dist/{hxml-bbac80e4.cjs.js → hxml-6d54d760.cjs.js} +2 -2
  55. package/dist/{hxml-bbac80e4.cjs.js.map → hxml-6d54d760.cjs.js.map} +1 -1
  56. package/dist/hy-33aa9c6f.cjs.js +2 -0
  57. package/dist/hy-33aa9c6f.cjs.js.map +1 -0
  58. package/dist/hy-a7a6e9c3.esm.js +1 -0
  59. package/dist/{julia-689ac552.cjs.js → julia-0152d8b9.cjs.js} +2 -2
  60. package/dist/{julia-689ac552.cjs.js.map → julia-0152d8b9.cjs.js.map} +1 -1
  61. package/dist/{latex-4d76e817.cjs.js → latex-33ebd2ce.cjs.js} +2 -2
  62. package/dist/{latex-4d76e817.cjs.js.map → latex-33ebd2ce.cjs.js.map} +1 -1
  63. package/dist/luau-19444703.cjs.js +2 -0
  64. package/dist/luau-19444703.cjs.js.map +1 -0
  65. package/dist/luau-b564b070.esm.js +1 -0
  66. package/dist/{marko-2880d4ee.cjs.js → marko-23ca6223.cjs.js} +2 -2
  67. package/dist/{marko-2880d4ee.cjs.js.map → marko-23ca6223.cjs.js.map} +1 -1
  68. package/dist/mdc-05d87356.esm.js +1 -0
  69. package/dist/mdc-56aefda2.cjs.js +2 -0
  70. package/dist/mdc-56aefda2.cjs.js.map +1 -0
  71. package/dist/{mdx-a859ee84.cjs.js → mdx-01dab0d1.cjs.js} +2 -2
  72. package/dist/{mdx-a859ee84.cjs.js.map → mdx-01dab0d1.cjs.js.map} +1 -1
  73. package/dist/{mdx-bf2a8fe9.esm.js → mdx-0782bcd8.esm.js} +1 -1
  74. package/dist/nextflow-11e4899f.esm.js +1 -0
  75. package/dist/nextflow-2a4bf0cc.cjs.js +2 -0
  76. package/dist/nextflow-2a4bf0cc.cjs.js.map +1 -0
  77. package/dist/{nginx-7bc0fc82.cjs.js → nginx-1aabec59.cjs.js} +2 -2
  78. package/dist/{nginx-7bc0fc82.cjs.js.map → nginx-1aabec59.cjs.js.map} +1 -1
  79. package/dist/nile-accordion/nile-accordion.cjs.js +1 -1
  80. package/dist/nile-accordion/nile-accordion.cjs.js.map +1 -1
  81. package/dist/nile-accordion/nile-accordion.esm.js +1 -1
  82. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  83. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  84. package/dist/nile-auto-complete/nile-auto-complete.esm.js +6 -15
  85. package/dist/nile-avatar/nile-avatar.cjs.js +1 -1
  86. package/dist/nile-avatar/nile-avatar.cjs.js.map +1 -1
  87. package/dist/nile-avatar/nile-avatar.esm.js +1 -1
  88. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  89. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  90. package/dist/nile-badge/nile-badge.esm.js +1 -1
  91. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
  92. package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
  93. package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +1 -1
  94. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
  95. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
  96. package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +2 -2
  97. package/dist/nile-button/nile-button.cjs.js +1 -1
  98. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  99. package/dist/nile-button/nile-button.esm.js +1 -1
  100. package/dist/nile-button-toggle/nile-button-toggle.cjs.js +1 -1
  101. package/dist/nile-button-toggle/nile-button-toggle.cjs.js.map +1 -1
  102. package/dist/nile-button-toggle/nile-button-toggle.esm.js +1 -1
  103. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js +1 -1
  104. package/dist/nile-button-toggle-group/nile-button-toggle-group.cjs.js.map +1 -1
  105. package/dist/nile-button-toggle-group/nile-button-toggle-group.esm.js +1 -1
  106. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  107. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  108. package/dist/nile-calendar/nile-calendar.esm.js +3 -3
  109. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  110. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  111. package/dist/nile-calendar/nile-calendar.test.esm.js +9 -5
  112. package/dist/nile-card/nile-card.cjs.js +1 -1
  113. package/dist/nile-card/nile-card.cjs.js.map +1 -1
  114. package/dist/nile-card/nile-card.esm.js +1 -1
  115. package/dist/nile-checkbox/nile-checkbox.cjs.js +1 -1
  116. package/dist/nile-checkbox/nile-checkbox.cjs.js.map +1 -1
  117. package/dist/nile-checkbox/nile-checkbox.esm.js +1 -1
  118. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  119. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  120. package/dist/nile-chip/nile-chip.esm.js +2 -6
  121. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  122. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  123. package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
  124. package/dist/nile-content-editor/nile-content-editor.cjs.js +1 -1
  125. package/dist/nile-content-editor/nile-content-editor.cjs.js.map +1 -1
  126. package/dist/nile-content-editor/nile-content-editor.esm.js +5 -5
  127. package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
  128. package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
  129. package/dist/nile-date-picker/nile-date-picker.esm.js +8 -15
  130. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  131. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  132. package/dist/nile-dialog/nile-dialog.esm.js +1 -1
  133. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  134. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  135. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  136. package/dist/nile-empty-state/nile-empty-state.cjs.js +1 -1
  137. package/dist/nile-empty-state/nile-empty-state.cjs.js.map +1 -1
  138. package/dist/nile-empty-state/nile-empty-state.esm.js +1 -1
  139. package/dist/nile-form-help-text/nile-form-help-text.cjs.js +1 -1
  140. package/dist/nile-form-help-text/nile-form-help-text.cjs.js.map +1 -1
  141. package/dist/nile-form-help-text/nile-form-help-text.esm.js +5 -4
  142. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +2 -0
  143. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js.map +1 -0
  144. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -0
  145. package/dist/nile-highlighter/nile-highlighter.cjs.js +1 -1
  146. package/dist/nile-highlighter/nile-highlighter.cjs.js.map +1 -1
  147. package/dist/nile-highlighter/nile-highlighter.esm.js +1 -1
  148. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  149. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  150. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  151. package/dist/nile-input/nile-input.cjs.js +1 -1
  152. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  153. package/dist/nile-input/nile-input.esm.js +1 -1
  154. package/dist/nile-link/nile-link.cjs.js +1 -1
  155. package/dist/nile-link/nile-link.cjs.js.map +1 -1
  156. package/dist/nile-link/nile-link.esm.js +1 -1
  157. package/dist/nile-list/nile-list.cjs.js +1 -1
  158. package/dist/nile-list/nile-list.cjs.js.map +1 -1
  159. package/dist/nile-list/nile-list.esm.js +1 -1
  160. package/dist/nile-list-item/nile-list-item.cjs.js +1 -1
  161. package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -1
  162. package/dist/nile-list-item/nile-list-item.esm.js +1 -1
  163. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  164. package/dist/nile-loader/nile-loader.test.cjs.js.map +1 -1
  165. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  166. package/dist/nile-menu/nile-menu.cjs.js +1 -1
  167. package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
  168. package/dist/nile-menu/nile-menu.esm.js +2 -5
  169. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  170. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  171. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  172. package/dist/nile-option/nile-option.cjs.js +1 -1
  173. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  174. package/dist/nile-option/nile-option.esm.js +1 -1
  175. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  176. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  177. package/dist/nile-popover/nile-popover.esm.js +4 -4
  178. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  179. package/dist/nile-popup/nile-popup.cjs.js.map +1 -1
  180. package/dist/nile-popup/nile-popup.esm.js +1 -1
  181. package/dist/nile-radio-group/nile-radio-group.cjs.js +1 -1
  182. package/dist/nile-radio-group/nile-radio-group.cjs.js.map +1 -1
  183. package/dist/nile-radio-group/nile-radio-group.esm.js +1 -1
  184. package/dist/nile-select/nile-select.cjs.js +1 -1
  185. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  186. package/dist/nile-select/nile-select.esm.js +4 -6
  187. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js +1 -1
  188. package/dist/nile-slide-toggle/nile-slide-toggle.cjs.js.map +1 -1
  189. package/dist/nile-slide-toggle/nile-slide-toggle.esm.js +1 -1
  190. package/dist/nile-split-panel/nile-split-panel.cjs.js +1 -1
  191. package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -1
  192. package/dist/nile-split-panel/nile-split-panel.esm.js +1 -1
  193. package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
  194. package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
  195. package/dist/nile-stepper/nile-stepper.esm.js +1 -1
  196. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  197. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  198. package/dist/nile-tab/nile-tab.esm.js +1 -1
  199. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  200. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  201. package/dist/nile-tab-group/nile-tab-group.esm.js +4 -4
  202. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  203. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
  204. package/dist/nile-tab-group/nile-tab-group.test.esm.js +13 -5
  205. package/dist/nile-table-body/nile-table-body.cjs.js +1 -1
  206. package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
  207. package/dist/nile-table-body/nile-table-body.esm.js +1 -1
  208. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  209. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  210. package/dist/nile-tag/nile-tag.esm.js +1 -1
  211. package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
  212. package/dist/nile-textarea/nile-textarea.cjs.js.map +1 -1
  213. package/dist/nile-textarea/nile-textarea.esm.js +1 -1
  214. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  215. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  216. package/dist/nile-toast/nile-toast.esm.js +1 -1
  217. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  218. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  219. package/dist/nile-tooltip/nile-tooltip.esm.js +1 -1
  220. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  221. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  222. package/dist/nile-tree/nile-tree.esm.js +1 -1
  223. package/dist/{nim-1cf0460c.cjs.js → nim-55b3acf7.cjs.js} +2 -2
  224. package/dist/{nim-1cf0460c.cjs.js.map → nim-55b3acf7.cjs.js.map} +1 -1
  225. package/dist/one-dark-pro-3bcc58f7.cjs.js +2 -0
  226. package/dist/one-dark-pro-3bcc58f7.cjs.js.map +1 -0
  227. package/dist/one-dark-pro-4fce25f8.esm.js +1 -0
  228. package/dist/{razor-0acc551a.cjs.js → razor-57f13c4a.cjs.js} +2 -2
  229. package/dist/{razor-0acc551a.cjs.js.map → razor-57f13c4a.cjs.js.map} +1 -1
  230. package/dist/{rst-6b792481.cjs.js → rst-4226018b.cjs.js} +2 -2
  231. package/dist/{rst-6b792481.cjs.js.map → rst-4226018b.cjs.js.map} +1 -1
  232. package/dist/{ruby-578b1ee6.cjs.js → ruby-4306ddd1.cjs.js} +2 -2
  233. package/dist/{ruby-578b1ee6.cjs.js.map → ruby-4306ddd1.cjs.js.map} +1 -1
  234. package/dist/{shaderlab-606f022b.cjs.js → shaderlab-2234cd06.cjs.js} +2 -2
  235. package/dist/{shaderlab-606f022b.cjs.js.map → shaderlab-2234cd06.cjs.js.map} +1 -1
  236. package/dist/{shellsession-cb0df007.cjs.js → shellsession-cd95727e.cjs.js} +2 -2
  237. package/dist/{shellsession-cb0df007.cjs.js.map → shellsession-cd95727e.cjs.js.map} +1 -1
  238. package/dist/{sparql-589e0308.cjs.js → sparql-197a828d.cjs.js} +2 -2
  239. package/dist/{sparql-589e0308.cjs.js.map → sparql-197a828d.cjs.js.map} +1 -1
  240. package/dist/src/nile-accordion/nile-accordion.d.ts +0 -1
  241. package/dist/src/nile-accordion/nile-accordion.js +0 -1
  242. package/dist/src/nile-accordion/nile-accordion.js.map +1 -1
  243. package/dist/src/nile-auto-complete/nile-auto-complete.d.ts +0 -1
  244. package/dist/src/nile-auto-complete/nile-auto-complete.js +2 -12
  245. package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
  246. package/dist/src/nile-avatar/nile-avatar.d.ts +0 -1
  247. package/dist/src/nile-avatar/nile-avatar.js +0 -1
  248. package/dist/src/nile-avatar/nile-avatar.js.map +1 -1
  249. package/dist/src/nile-badge/nile-badge.d.ts +0 -1
  250. package/dist/src/nile-badge/nile-badge.js +0 -1
  251. package/dist/src/nile-badge/nile-badge.js.map +1 -1
  252. package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +0 -1
  253. package/dist/src/nile-breadcrumb/nile-breadcrumb.js +0 -5
  254. package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
  255. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +0 -1
  256. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +0 -1
  257. package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
  258. package/dist/src/nile-button/nile-button.d.ts +0 -1
  259. package/dist/src/nile-button/nile-button.js +0 -1
  260. package/dist/src/nile-button/nile-button.js.map +1 -1
  261. package/dist/src/nile-button-toggle/nile-button-toggle.d.ts +0 -1
  262. package/dist/src/nile-button-toggle/nile-button-toggle.js +0 -1
  263. package/dist/src/nile-button-toggle/nile-button-toggle.js.map +1 -1
  264. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.d.ts +0 -1
  265. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js +0 -1
  266. package/dist/src/nile-button-toggle-group/nile-button-toggle-group.js.map +1 -1
  267. package/dist/src/nile-calendar/nile-calendar.d.ts +1 -9
  268. package/dist/src/nile-calendar/nile-calendar.js +1 -55
  269. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  270. package/dist/src/nile-calendar/nile-calendar.test.js +50 -5
  271. package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
  272. package/dist/src/nile-card/nile-card.d.ts +0 -1
  273. package/dist/src/nile-card/nile-card.js +0 -1
  274. package/dist/src/nile-card/nile-card.js.map +1 -1
  275. package/dist/src/nile-checkbox/nile-checkbox.d.ts +0 -1
  276. package/dist/src/nile-checkbox/nile-checkbox.js +0 -1
  277. package/dist/src/nile-checkbox/nile-checkbox.js.map +1 -1
  278. package/dist/src/nile-chip/nile-chip.d.ts +0 -1
  279. package/dist/src/nile-chip/nile-chip.js +0 -5
  280. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  281. package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -1
  282. package/dist/src/nile-code-editor/nile-code-editor.js +7 -4
  283. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  284. package/dist/src/nile-content-editor/nile-content-editor.d.ts +0 -1
  285. package/dist/src/nile-content-editor/nile-content-editor.js +0 -1
  286. package/dist/src/nile-content-editor/nile-content-editor.js.map +1 -1
  287. package/dist/src/nile-date-picker/nile-date-picker.d.ts +0 -1
  288. package/dist/src/nile-date-picker/nile-date-picker.js +7 -14
  289. package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
  290. package/dist/src/nile-dialog/nile-dialog.d.ts +0 -1
  291. package/dist/src/nile-dialog/nile-dialog.js +0 -1
  292. package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
  293. package/dist/src/nile-drawer/nile-drawer.d.ts +0 -1
  294. package/dist/src/nile-drawer/nile-drawer.js +0 -1
  295. package/dist/src/nile-drawer/nile-drawer.js.map +1 -1
  296. package/dist/src/nile-empty-state/nile-empty-state.d.ts +0 -1
  297. package/dist/src/nile-empty-state/nile-empty-state.js +0 -1
  298. package/dist/src/nile-empty-state/nile-empty-state.js.map +1 -1
  299. package/dist/src/nile-form-help-text/nile-form-help-text.d.ts +2 -0
  300. package/dist/src/nile-form-help-text/nile-form-help-text.js +14 -6
  301. package/dist/src/nile-form-help-text/nile-form-help-text.js.map +1 -1
  302. package/dist/src/nile-form-help-text/nile-form-help-text.test.d.ts +1 -0
  303. package/dist/src/nile-form-help-text/nile-form-help-text.test.js +67 -0
  304. package/dist/src/nile-form-help-text/nile-form-help-text.test.js.map +1 -0
  305. package/dist/src/nile-icon-button/nile-icon-button.d.ts +0 -1
  306. package/dist/src/nile-icon-button/nile-icon-button.js +0 -1
  307. package/dist/src/nile-icon-button/nile-icon-button.js.map +1 -1
  308. package/dist/src/nile-input/nile-input.d.ts +0 -1
  309. package/dist/src/nile-input/nile-input.js +0 -1
  310. package/dist/src/nile-input/nile-input.js.map +1 -1
  311. package/dist/src/nile-link/nile-link.d.ts +0 -1
  312. package/dist/src/nile-link/nile-link.js +0 -1
  313. package/dist/src/nile-link/nile-link.js.map +1 -1
  314. package/dist/src/nile-list/nile-list.d.ts +0 -1
  315. package/dist/src/nile-list/nile-list.js +0 -5
  316. package/dist/src/nile-list/nile-list.js.map +1 -1
  317. package/dist/src/nile-list-item/nile-list-item.d.ts +0 -1
  318. package/dist/src/nile-list-item/nile-list-item.js +0 -1
  319. package/dist/src/nile-list-item/nile-list-item.js.map +1 -1
  320. package/dist/src/nile-loader/nile-loader.test.js +5 -0
  321. package/dist/src/nile-loader/nile-loader.test.js.map +1 -1
  322. package/dist/src/nile-menu/nile-menu.d.ts +0 -1
  323. package/dist/src/nile-menu/nile-menu.js +0 -4
  324. package/dist/src/nile-menu/nile-menu.js.map +1 -1
  325. package/dist/src/nile-menu-item/nile-menu-item.d.ts +0 -2
  326. package/dist/src/nile-menu-item/nile-menu-item.js +0 -2
  327. package/dist/src/nile-menu-item/nile-menu-item.js.map +1 -1
  328. package/dist/src/nile-option/nile-option.d.ts +0 -2
  329. package/dist/src/nile-option/nile-option.js +0 -2
  330. package/dist/src/nile-option/nile-option.js.map +1 -1
  331. package/dist/src/nile-popover/nile-popover.d.ts +0 -1
  332. package/dist/src/nile-popover/nile-popover.js +0 -1
  333. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  334. package/dist/src/nile-popup/nile-popup.d.ts +0 -2
  335. package/dist/src/nile-popup/nile-popup.js +0 -2
  336. package/dist/src/nile-popup/nile-popup.js.map +1 -1
  337. package/dist/src/nile-radio-group/nile-radio-group.d.ts +0 -1
  338. package/dist/src/nile-radio-group/nile-radio-group.js +0 -1
  339. package/dist/src/nile-radio-group/nile-radio-group.js.map +1 -1
  340. package/dist/src/nile-select/nile-select.d.ts +0 -1
  341. package/dist/src/nile-select/nile-select.js +3 -6
  342. package/dist/src/nile-select/nile-select.js.map +1 -1
  343. package/dist/src/nile-slide-toggle/nile-slide-toggle.d.ts +0 -1
  344. package/dist/src/nile-slide-toggle/nile-slide-toggle.js +0 -1
  345. package/dist/src/nile-slide-toggle/nile-slide-toggle.js.map +1 -1
  346. package/dist/src/nile-split-panel/nile-split-panel.d.ts +0 -1
  347. package/dist/src/nile-split-panel/nile-split-panel.js +0 -1
  348. package/dist/src/nile-split-panel/nile-split-panel.js.map +1 -1
  349. package/dist/src/nile-stepper/nile-stepper.d.ts +0 -1
  350. package/dist/src/nile-stepper/nile-stepper.js +0 -1
  351. package/dist/src/nile-stepper/nile-stepper.js.map +1 -1
  352. package/dist/src/nile-tab/nile-tab.d.ts +0 -1
  353. package/dist/src/nile-tab/nile-tab.js +0 -1
  354. package/dist/src/nile-tab/nile-tab.js.map +1 -1
  355. package/dist/src/nile-tab-group/nile-tab-group.d.ts +1 -2
  356. package/dist/src/nile-tab-group/nile-tab-group.js +5 -10
  357. package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
  358. package/dist/src/nile-tab-group/nile-tab-group.test.js +56 -22
  359. package/dist/src/nile-tab-group/nile-tab-group.test.js.map +1 -1
  360. package/dist/src/nile-table-body/nile-table-body.d.ts +0 -1
  361. package/dist/src/nile-table-body/nile-table-body.js +0 -1
  362. package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
  363. package/dist/src/nile-tag/nile-tag.d.ts +0 -1
  364. package/dist/src/nile-tag/nile-tag.js +0 -1
  365. package/dist/src/nile-tag/nile-tag.js.map +1 -1
  366. package/dist/src/nile-textarea/nile-textarea.d.ts +0 -1
  367. package/dist/src/nile-textarea/nile-textarea.js +0 -1
  368. package/dist/src/nile-textarea/nile-textarea.js.map +1 -1
  369. package/dist/src/nile-toast/nile-toast.d.ts +0 -1
  370. package/dist/src/nile-toast/nile-toast.js +0 -1
  371. package/dist/src/nile-toast/nile-toast.js.map +1 -1
  372. package/dist/src/nile-tooltip/nile-tooltip.d.ts +0 -1
  373. package/dist/src/nile-tooltip/nile-tooltip.js +0 -1
  374. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  375. package/dist/src/nile-tree/nile-tree.d.ts +0 -1
  376. package/dist/src/nile-tree/nile-tree.js +0 -1
  377. package/dist/src/nile-tree/nile-tree.js.map +1 -1
  378. package/dist/{svelte-2ae868b6.cjs.js → svelte-5a90df12.cjs.js} +2 -2
  379. package/dist/{svelte-2ae868b6.cjs.js.map → svelte-5a90df12.cjs.js.map} +1 -1
  380. package/dist/{svelte-ac03a3ac.esm.js → svelte-cb8564e6.esm.js} +1 -1
  381. package/dist/{system-verilog-7d2d7268.cjs.js → system-verilog-b3e652eb.cjs.js} +2 -2
  382. package/dist/{system-verilog-7d2d7268.cjs.js.map → system-verilog-b3e652eb.cjs.js.map} +1 -1
  383. package/dist/{system-verilog-2d49210f.esm.js → system-verilog-c1c6377f.esm.js} +1 -1
  384. package/dist/{templ-f2d0dadd.esm.js → templ-13492ead.esm.js} +1 -1
  385. package/dist/{templ-2a2d64b7.cjs.js → templ-4425132d.cjs.js} +2 -2
  386. package/dist/{templ-2a2d64b7.cjs.js.map → templ-4425132d.cjs.js.map} +1 -1
  387. package/dist/{tex-8addc455.cjs.js → tex-d609b400.cjs.js} +2 -2
  388. package/dist/{tex-8addc455.cjs.js.map → tex-d609b400.cjs.js.map} +1 -1
  389. package/dist/{ts-tags-e56ee3ee.cjs.js → ts-tags-ba7eb9e3.cjs.js} +2 -2
  390. package/dist/{ts-tags-e56ee3ee.cjs.js.map → ts-tags-ba7eb9e3.cjs.js.map} +1 -1
  391. package/dist/tsconfig.tsbuildinfo +1 -1
  392. package/dist/{twig-911808dc.cjs.js → twig-e9bb57f2.cjs.js} +2 -2
  393. package/dist/{twig-911808dc.cjs.js.map → twig-e9bb57f2.cjs.js.map} +1 -1
  394. package/dist/{vue-9b06428b.cjs.js → vue-16d91bfa.cjs.js} +2 -2
  395. package/dist/{vue-9b06428b.cjs.js.map → vue-16d91bfa.cjs.js.map} +1 -1
  396. package/dist/{vue-html-ca1dd5bf.cjs.js → vue-html-432cdd7f.cjs.js} +2 -2
  397. package/dist/{vue-html-ca1dd5bf.cjs.js.map → vue-html-432cdd7f.cjs.js.map} +1 -1
  398. package/dist/wikitext-2748811a.cjs.js +2 -0
  399. package/dist/wikitext-2748811a.cjs.js.map +1 -0
  400. package/dist/wikitext-c9071578.esm.js +1 -0
  401. package/package.json +2 -2
  402. package/src/nile-accordion/nile-accordion.ts +0 -1
  403. package/src/nile-auto-complete/nile-auto-complete.ts +2 -13
  404. package/src/nile-avatar/nile-avatar.ts +0 -2
  405. package/src/nile-badge/nile-badge.ts +0 -2
  406. package/src/nile-breadcrumb/nile-breadcrumb.ts +0 -2
  407. package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +0 -2
  408. package/src/nile-button/nile-button.ts +0 -2
  409. package/src/nile-button-toggle/nile-button-toggle.ts +0 -2
  410. package/src/nile-button-toggle-group/nile-button-toggle-group.ts +0 -2
  411. package/src/nile-calendar/nile-calendar.test.ts +64 -5
  412. package/src/nile-calendar/nile-calendar.ts +2 -69
  413. package/src/nile-card/nile-card.ts +0 -2
  414. package/src/nile-checkbox/nile-checkbox.ts +0 -2
  415. package/src/nile-chip/nile-chip.ts +0 -6
  416. package/src/nile-code-editor/nile-code-editor.ts +6 -5
  417. package/src/nile-content-editor/nile-content-editor.ts +0 -2
  418. package/src/nile-date-picker/nile-date-picker.ts +7 -15
  419. package/src/nile-dialog/nile-dialog.ts +0 -2
  420. package/src/nile-drawer/nile-drawer.ts +0 -2
  421. package/src/nile-empty-state/nile-empty-state.ts +0 -2
  422. package/src/nile-form-help-text/nile-form-help-text.test.ts +86 -0
  423. package/src/nile-form-help-text/nile-form-help-text.ts +17 -15
  424. package/src/nile-icon-button/nile-icon-button.ts +0 -2
  425. package/src/nile-input/nile-input.ts +0 -2
  426. package/src/nile-link/nile-link.ts +0 -2
  427. package/src/nile-list/nile-list.ts +0 -2
  428. package/src/nile-list-item/nile-list-item.ts +0 -2
  429. package/src/nile-loader/nile-loader.test.ts +6 -0
  430. package/src/nile-menu/nile-menu.ts +0 -6
  431. package/src/nile-menu-item/nile-menu-item.ts +0 -3
  432. package/src/nile-option/nile-option.ts +0 -3
  433. package/src/nile-popover/nile-popover.ts +0 -2
  434. package/src/nile-popup/nile-popup.ts +0 -3
  435. package/src/nile-radio-group/nile-radio-group.ts +0 -2
  436. package/src/nile-select/nile-select.ts +3 -7
  437. package/src/nile-slide-toggle/nile-slide-toggle.ts +0 -2
  438. package/src/nile-split-panel/nile-split-panel.ts +0 -2
  439. package/src/nile-stepper/nile-stepper.ts +0 -2
  440. package/src/nile-tab/nile-tab.ts +0 -2
  441. package/src/nile-tab-group/nile-tab-group.test.ts +71 -29
  442. package/src/nile-tab-group/nile-tab-group.ts +6 -14
  443. package/src/nile-table-body/nile-table-body.ts +0 -2
  444. package/src/nile-tag/nile-tag.ts +0 -2
  445. package/src/nile-textarea/nile-textarea.ts +0 -2
  446. package/src/nile-toast/nile-toast.ts +0 -2
  447. package/src/nile-tooltip/nile-tooltip.ts +0 -2
  448. package/src/nile-tree/nile-tree.ts +0 -2
  449. package/tsconfig.json +1 -0
  450. package/vscode-html-custom-data.json +3722 -60
  451. package/dist/abap-1e9762d1.esm.js +0 -1
  452. package/dist/abap-3b3fe406.cjs.js +0 -2
  453. package/dist/abap-3b3fe406.cjs.js.map +0 -1
  454. package/dist/catppuccin-frappe-c0734345.esm.js +0 -1
  455. package/dist/catppuccin-frappe-eb77e95d.cjs.js +0 -2
  456. package/dist/catppuccin-frappe-eb77e95d.cjs.js.map +0 -1
  457. package/dist/catppuccin-latte-471f76fc.cjs.js +0 -2
  458. package/dist/catppuccin-latte-471f76fc.cjs.js.map +0 -1
  459. package/dist/catppuccin-latte-d798493f.esm.js +0 -1
  460. package/dist/catppuccin-macchiato-7ac78e7e.cjs.js +0 -2
  461. package/dist/catppuccin-macchiato-7ac78e7e.cjs.js.map +0 -1
  462. package/dist/catppuccin-macchiato-d78b2ec2.esm.js +0 -1
  463. package/dist/catppuccin-mocha-3b00f8d6.cjs.js +0 -2
  464. package/dist/catppuccin-mocha-3b00f8d6.cjs.js.map +0 -1
  465. package/dist/catppuccin-mocha-6a189a57.esm.js +0 -1
  466. package/dist/cobol-4ed2b235.esm.js +0 -1
  467. package/dist/cobol-c428fca2.cjs.js +0 -2
  468. package/dist/cobol-c428fca2.cjs.js.map +0 -1
  469. package/dist/go-4c55ae2b.esm.js +0 -1
  470. package/dist/go-9bee484b.cjs.js +0 -2
  471. package/dist/go-9bee484b.cjs.js.map +0 -1
  472. package/dist/hy-431f15f8.cjs.js +0 -2
  473. package/dist/hy-431f15f8.cjs.js.map +0 -1
  474. package/dist/hy-5e43d6c1.esm.js +0 -1
  475. package/dist/luau-0b166b7a.cjs.js +0 -2
  476. package/dist/luau-0b166b7a.cjs.js.map +0 -1
  477. package/dist/luau-7d7eaa97.esm.js +0 -1
  478. package/dist/mdc-13285ad6.esm.js +0 -1
  479. package/dist/mdc-a3fe82c5.cjs.js +0 -2
  480. package/dist/mdc-a3fe82c5.cjs.js.map +0 -1
  481. package/dist/nextflow-35e5a63d.esm.js +0 -1
  482. package/dist/nextflow-c666e91b.cjs.js +0 -2
  483. package/dist/nextflow-c666e91b.cjs.js.map +0 -1
  484. package/dist/nile-split-panel/nile-split-panel.test.cjs.js +0 -2
  485. package/dist/nile-split-panel/nile-split-panel.test.cjs.js.map +0 -1
  486. package/dist/nile-split-panel/nile-split-panel.test.esm.js +0 -1
  487. package/dist/nile-stepper/nile-stepper.test.cjs.js +0 -2
  488. package/dist/nile-stepper/nile-stepper.test.cjs.js.map +0 -1
  489. package/dist/nile-stepper/nile-stepper.test.esm.js +0 -1
  490. package/dist/nile-tree/nile-tree.test.cjs.js +0 -2
  491. package/dist/nile-tree/nile-tree.test.cjs.js.map +0 -1
  492. package/dist/nile-tree/nile-tree.test.esm.js +0 -1
  493. package/dist/one-dark-pro-9477257e.cjs.js +0 -2
  494. package/dist/one-dark-pro-9477257e.cjs.js.map +0 -1
  495. package/dist/one-dark-pro-deb4f5e9.esm.js +0 -1
  496. package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +0 -1
  497. package/dist/src/nile-split-panel/nile-split-panel.test.js +0 -4
  498. package/dist/src/nile-split-panel/nile-split-panel.test.js.map +0 -1
  499. package/dist/src/nile-stepper/nile-stepper.test.d.ts +0 -4
  500. package/dist/src/nile-stepper/nile-stepper.test.js +0 -7
  501. package/dist/src/nile-stepper/nile-stepper.test.js.map +0 -1
  502. package/dist/src/nile-tree/nile-tree.test.d.ts +0 -2
  503. package/dist/src/nile-tree/nile-tree.test.js +0 -5
  504. package/dist/src/nile-tree/nile-tree.test.js.map +0 -1
  505. package/dist/wikitext-b9a7e67b.cjs.js +0 -2
  506. package/dist/wikitext-b9a7e67b.cjs.js.map +0 -1
  507. package/dist/wikitext-c06489b3.esm.js +0 -1
  508. package/src/nile-split-panel/nile-split-panel.test.ts +0 -7
  509. package/src/nile-stepper/nile-stepper.test.ts +0 -12
  510. package/src/nile-tree/nile-tree.test.ts +0 -9
@@ -1,2 +1,2 @@
1
- System.register(["./html-3718679d.cjs.js","./sql-e6e7243e.cjs.js","./css-80d60bac.cjs.js","./c-37e019c9.cjs.js","./javascript-ce720697.cjs.js","./shellscript-f4aa09bf.cjs.js"],function(_export,_context){"use strict";var e,t,n,a,r,i,s;function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2;}return{setters:[function(_html00aCjsJs){e=_html00aCjsJs["default"];},function(_sql00zCjsJs){t=_sql00zCjsJs["default"];},function(_css00cCjsJs){n=_css00cCjsJs["default"];},function(_c00ACjsJs){a=_c00ACjsJs["default"];},function(_javascript00bCjsJs){r=_javascript00bCjsJs["default"];},function(_shellscript00OCjsJs){i=_shellscript00OCjsJs["default"];}],execute:function execute(){_export("default",s=[].concat(_toConsumableArray(e),_toConsumableArray(t),_toConsumableArray(n),_toConsumableArray(a),_toConsumableArray(r),_toConsumableArray(i),[Object.freeze(JSON.parse('{"displayName":"Crystal","fileTypes":["cr"],"firstLineMatch":"^#!/.*\\\\bcrystal","foldingStartMarker":"^(\\\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\\\bend\\\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\\"(\\\\\\\\.|[^\\"])*+\\"|\'(\\\\\\\\.|[^\'])*+\'|[^#\\"\'])*(\\\\s(do|begin|case)|(?<!\\\\$)[-+=&|*/~%^<>~]\\\\s*+(if|unless)))\\\\b(?![^;]*+;.*?\\\\bend\\\\b)|(\\"(\\\\\\\\.|[^\\"])*+\\"|\'(\\\\\\\\.|[^\'])*+\'|[^#\\"\'])*(\\\\{(?![^}]*+\\\\})|\\\\[(?![^\\\\]]*+\\\\]))).*$|[#].*?\\\\(fold\\\\)\\\\s*+$","foldingStopMarker":"((^|;)\\\\s*+end\\\\s*+([#].*)?$|(^|;)\\\\s*+end\\\\..*$|^\\\\s*+[}\\\\]],?\\\\s*+([#].*)?$|[#].*?\\\\(end\\\\)\\\\s*+$|^=end)","name":"crystal","patterns":[{"captures":{"1":{"name":"keyword.control.class.crystal"},"2":{"name":"keyword.control.class.crystal"},"3":{"name":"entity.name.type.class.crystal"},"5":{"name":"punctuation.separator.crystal"},"6":{"name":"support.class.other.type-param.crystal"},"7":{"name":"entity.other.inherited-class.crystal"},"8":{"name":"punctuation.separator.crystal"},"9":{"name":"punctuation.separator.crystal"},"10":{"name":"support.class.other.type-param.crystal"},"11":{"name":"punctuation.definition.variable.crystal"}},"match":"^\\\\s*(abstract)?\\\\s*(class|struct|union|annotation|enum)\\\\s+(([.A-Z_:\\\\x{80}-\\\\x{10FFFF}][.\\\\w:\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([,\\\\s.a-zA-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+)\\\\))?(\\\\s*(<)\\\\s*[.:A-Z\\\\x{80}-\\\\x{10FFFF}][.:\\\\w\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([.a-zA-Z0-9_:]+\\\\s,)\\\\))?)?)|((<<)\\\\s*[.A-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+))","name":"meta.class.crystal"},{"captures":{"1":{"name":"keyword.control.module.crystal"},"2":{"name":"entity.name.type.module.crystal"},"3":{"name":"entity.other.inherited-class.module.first.crystal"},"4":{"name":"punctuation.separator.inheritance.crystal"},"5":{"name":"entity.other.inherited-class.module.second.crystal"},"6":{"name":"punctuation.separator.inheritance.crystal"},"7":{"name":"entity.other.inherited-class.module.third.crystal"},"8":{"name":"punctuation.separator.inheritance.crystal"}},"match":"^\\\\s*(module)\\\\s+(([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))*[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)","name":"meta.module.crystal"},{"captures":{"1":{"name":"keyword.control.lib.crystal"},"2":{"name":"entity.name.type.lib.crystal"},"3":{"name":"entity.other.inherited-class.lib.first.crystal"},"4":{"name":"punctuation.separator.inheritance.crystal"},"5":{"name":"entity.other.inherited-class.lib.second.crystal"},"6":{"name":"punctuation.separator.inheritance.crystal"},"7":{"name":"entity.other.inherited-class.lib.third.crystal"},"8":{"name":"punctuation.separator.inheritance.crystal"}},"match":"^\\\\s*(lib)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)","name":"meta.lib.crystal"},{"captures":{"1":{"name":"keyword.control.lib.type.crystal"},"2":{"name":"entity.name.lib.type.crystal"},"3":{"name":"keyword.control.lib.crystal"},"4":{"name":"entity.name.lib.type.value.crystal"}},"comment":"type in lib","match":"(?<!\\\\.)\\\\b(type)\\\\s+([A-Z]\\\\w+)\\\\s*(=)\\\\s*(.+)","name":"meta.lib.type.crystal"},{"comment":"everything being a reserved word, not a value, and needing a \'end\' is a..","match":"(?<!\\\\.)\\\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\\\b(?![?!:])","name":"keyword.control.crystal"},{"comment":"everything being a reserved word, not a value, and not needing a \'end\' is a..","match":"(?<!\\\\.)\\\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\\\b(?![?!:])","name":"keyword.control.primary.crystal"},{"comment":"everything being a spec keyword, not a value, and needing a block is a..","match":"(?<!\\\\.)\\\\b(describe|context|it|expect_raises)\\\\b(?![?!:])","name":"keyword.control.crystal"},{"comment":"contextual smart pair support for block parameters","match":"(?<!\\\\.)\\\\bdo\\\\b\\\\s*","name":"keyword.control.start-block.crystal"},{"comment":"contextual smart pair support","match":"(?<=\\\\{)(\\\\s+)","name":"meta.syntax.crystal.start-block"},{"comment":"Just as above but being not a logical operation","match":"(?<!\\\\.)\\\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\\\b(?![?!:])|\\\\.(is_a\\\\?|nil\\\\?|responds_to\\\\?|as\\\\?|as\\b)","name":"keyword.control.pseudo-method.crystal"},{"match":"\\\\bnil\\\\b(?![?!:])","name":"constant.language.nil.crystal"},{"match":"\\\\b(true|false)\\\\b(?![?!:])","name":"constant.language.boolean.crystal"},{"match":"\\\\b(__(DIR|FILE|LINE|END_LINE)__)\\\\b(?![?!:])","name":"variable.language.crystal"},{"match":"\\\\b(self)\\\\b(?![?!:])","name":"variable.language.self.crystal"},{"comment":"https://crystal-lang.org/api/0.36.1/Object.html#macro-summary","match":"(?<!\\\\.)\\\\b(((class_)?((getter|property)\\\\b[!?]?|setter\\\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\\\b)(?![?!:])","name":"support.function.kernel.crystal"},{"begin":"\\\\b(require)\\\\b","captures":{"1":{"name":"keyword.other.special-method.crystal"}},"end":"$|(?=#)","name":"meta.require.crystal","patterns":[{"include":"$self"}]},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?","name":"variable.other.readwrite.instance.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(@@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?","name":"variable.other.readwrite.class.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(\\\\$)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.global.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(?!%[Qxrqwi]?[(\\\\[{<\\\\|])%([a-zA-Z_]\\\\w*\\\\.)*[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.fresh.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(\\\\$)(!|@|&|`|\'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\"|-[0adFiIlpv])","name":"variable.other.readwrite.global.pre-defined.crystal"},{"begin":"\\\\b(ENV)\\\\[","beginCaptures":{"1":{"name":"variable.other.constant.crystal"}},"end":"\\\\]","name":"meta.environment-variable.crystal","patterns":[{"include":"$self"}]},{"comment":"Literals name of Crystal","match":"\\\\b[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*","name":"support.class.crystal"},{"comment":"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html","match":"(?<!\\\\.)\\\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\\\b(?![?!:])","name":"support.function.kernel.crystal"},{"comment":"Constant name in any where","match":"\\\\b[_A-Z]+\\\\b","name":"variable.other.constant.crystal"},{"begin":"(?=def\\\\b)(?<=^|\\\\s)(def)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?))\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.def.crystal"},"2":{"name":"entity.name.function.crystal"},"3":{"name":"punctuation.definition.parameters.crystal"}},"comment":"The method pattern comes from the symbol pattern. See there for an explanation.","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.crystal"}},"name":"meta.function.method.with-arguments.crystal","patterns":[{"begin":"(?![\\\\s,)])","end":"(?=,|\\\\)\\\\s*)","patterns":[{"captures":{"1":{"name":"storage.type.variable.crystal"},"2":{"name":"constant.other.symbol.hashkey.parameter.function.crystal"},"3":{"name":"punctuation.definition.constant.hashkey.crystal"},"4":{"name":"variable.parameter.function.crystal"}},"match":"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))"},{"include":"$self"}]}]},{"captures":{"1":{"name":"keyword.control.def.crystal"},"3":{"name":"entity.name.function.crystal"}},"comment":" the optional name is just to catch the def also without a method-name","match":"(?=def\\\\b)(?<=^|\\\\s)(def)\\\\b(\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?)))?","name":"meta.function.method.without-arguments.crystal"},{"comment":"Floating point literal (fraction)","match":"\\\\b\\\\d[0-9_]*\\\\.\\\\d[0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Floating point literal (exponent)","match":"\\\\b\\\\d[0-9_]*(\\\\.\\\\d[0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Floating point literal (typed)","match":"\\\\b\\\\d[0-9_]*(\\\\.\\\\d[0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Integer literal (decimal)","match":"\\\\b(?!0\\\\d)\\\\d[0-9_]*([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.decimal.crystal"},{"comment":"Integer literal (hexadecimal)","match":"\\\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.hexadecimal.crystal"},{"comment":"Integer literal (octal)","match":"\\\\b0o[0-7_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.octal.crystal"},{"comment":"Integer literal (binary)","match":"\\\\b0b[01_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.binary.crystal"},{"begin":":\'","beginCaptures":{"0":{"name":"punctuation.definition.symbol.begin.crystal"}},"comment":"symbol literal with \'\' delimiter","end":"\'","endCaptures":{"0":{"name":"punctuation.definition.symbol.end.crystal"}},"name":"constant.other.symbol.crystal","patterns":[{"match":"\\\\\\\\[\'\\\\\\\\]","name":"constant.character.escape.crystal"}]},{"begin":":\\"","beginCaptures":{"0":{"name":"punctuation.section.symbol.begin.crystal"}},"comment":"symbol literal with \\"\\" delimiter","end":"\\"","endCaptures":{"0":{"name":"punctuation.section.symbol.end.crystal"}},"name":"constant.other.symbol.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"comment":"Needs higher precedence than regular expressions.","match":"(?<!\\\\()/=","name":"keyword.operator.assignment.augmented.crystal"},{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"string literal with \'\' delimiter","end":"\'","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.single.crystal","patterns":[{"match":"\\\\\\\\\'|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"}]},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"string literal with interpolation and \\"\\" delimiter","end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.double.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allows for interpolation)","end":"`","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"%x\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},{"begin":"%x\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},{"begin":"%x<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},{"begin":"%x\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},{"begin":"%x\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?:^|(?<=[=>~(?:\\\\[,|&;]|[\\\\s;]if\\\\s|[\\\\s;]elsif\\\\s|[\\\\s;]while\\\\s|[\\\\s;]unless\\\\s|[\\\\s;]when\\\\s|[\\\\s;]assert_match\\\\s|[\\\\s;]or\\\\s|[\\\\s;]and\\\\s|[\\\\s;]not\\\\s|[\\\\s.]index\\\\s|[\\\\s.]scan\\\\s|[\\\\s.]sub\\\\s|[\\\\s.]sub!\\\\s|[\\\\s.]gsub\\\\s|[\\\\s.]gsub!\\\\s|[\\\\s.]match\\\\s)|(?<=^when\\\\s|^if\\\\s|^elsif\\\\s|^while\\\\s|^unless\\\\s))\\\\s*((/))(?![*+{}?])","captures":{"1":{"name":"string.regexp.classic.crystal"},"2":{"name":"punctuation.definition.string.crystal"}},"comment":"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp","contentName":"string.regexp.classic.crystal","end":"((/[imsx]*))","patterns":[{"include":"#regex_sub"}]},{"begin":"%r\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\}[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_curly_r"}]},{"begin":"%r\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\][imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_brackets_r"}]},{"begin":"%r\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\)[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_parens_r"}]},{"begin":"%r<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":">[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_ltgt_r"}]},{"begin":"%r\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\|[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"}]},{"begin":"%Q?\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation ()","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},{"begin":"%Q?\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation []","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},{"begin":"%Q?<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation <>","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},{"begin":"%Q?\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation -- {}","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.double.crystal.mod","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},{"begin":"%Q\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation -- ||","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"%[qwi]\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- ()","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_parens"}]},{"begin":"%[qwi]<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- <>","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\>|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_ltgt"}]},{"begin":"%[qwi]\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- []","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_brackets"}]},{"begin":"%[qwi]\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- {}","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_curly"}]},{"begin":"%[qwi]\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- ||","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"comment":"Cant be named because its not necessarily an escape.","match":"\\\\\\\\."}]},{"captures":{"1":{"name":"punctuation.definition.constant.crystal"}},"comment":"symbols","match":"(?<!:)(:)(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\][?=]?|@@?[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)","name":"constant.other.symbol.crystal"},{"captures":{"1":{"name":"punctuation.definition.constant.crystal"}},"comment":"symbols","match":"(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!])?)(:)(?!:)","name":"constant.other.symbol.crystal.19syntax"},{"captures":{"1":{"name":"punctuation.definition.comment.crystal"}},"match":"(?:^[ \\\\t]+)?(#).*$\\\\n?","name":"comment.line.number-sign.crystal"},{"match":"(?<!}})\\\\b_([\\\\w]+[?!]?)\\\\b(?!\\\\()","name":"comment.unused.crystal"},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded HTML and indented terminator","contentName":"text.html.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.html.crystal","patterns":[{"include":"#heredoc"},{"include":"text.html.basic"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded SQL and indented terminator","contentName":"text.sql.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.sql.crystal","patterns":[{"include":"#heredoc"},{"include":"source.sql"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded css and intented terminator","contentName":"text.css.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.css.crystal","patterns":[{"include":"#heredoc"},{"include":"source.css"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded c++ and intented terminator","contentName":"text.c++.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.cplusplus.crystal","patterns":[{"include":"#heredoc"},{"include":"source.c++"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded c++ and intented terminator","contentName":"text.c.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.c.crystal","patterns":[{"include":"#heredoc"},{"include":"source.c"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded javascript and intented terminator","contentName":"text.js.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.js.crystal","patterns":[{"include":"#heredoc"},{"include":"source.js"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded javascript and intented terminator","contentName":"text.js.jquery.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.js.jquery.crystal","patterns":[{"include":"#heredoc"},{"include":"source.js.jquery"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded shell and intented terminator","contentName":"text.shell.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.shell.crystal","patterns":[{"include":"#heredoc"},{"include":"source.shell"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CRYSTAL)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded crystal and intented terminator","contentName":"text.crystal.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.crystal.crystal","patterns":[{"include":"#heredoc"},{"include":"source.crystal"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-\'(\\\\w+)\')","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with indented terminator","end":"\\\\s*\\\\1\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.heredoc.crystal","patterns":[{"include":"#heredoc"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\\\\w+)\\\\b)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with indented terminator","end":"\\\\s*\\\\1\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.heredoc.crystal","patterns":[{"include":"#heredoc"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?<={|{\\\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\\\s|^do\\\\s)(\\\\|)","captures":{"1":{"name":"punctuation.separator.variable.crystal"}},"end":"(?<!\\\\|)(\\\\|)(?!\\\\|)","patterns":[{"include":"source.crystal"},{"match":"[_a-zA-Z][_a-zA-Z0-9]*","name":"variable.other.block.crystal"},{"match":",","name":"punctuation.separator.variable.crystal"}]},{"match":"=>","name":"punctuation.separator.key-value"},{"match":"->","name":"support.function.kernel.crystal"},{"match":"<<=|%=|&{1,2}=|\\\\*=|\\\\*\\\\*=|\\\\+=|-=|\\\\^=|\\\\|{1,2}=|<<","name":"keyword.operator.assignment.augmented.crystal"},{"match":"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?","name":"keyword.operator.comparison.crystal"},{"match":"(?<=^|[ \\\\t])!|&&|\\\\|\\\\||\\\\^","name":"keyword.operator.logical.crystal"},{"match":"(\\\\{\\\\%|\\\\%\\\\}|\\\\{\\\\{|\\\\}\\\\})","name":"keyword.operator.macro.crystal"},{"captures":{"1":{"name":"punctuation.separator.method.crystal"}},"comment":"Safe navigation operator","match":"(&\\\\.)\\\\s*(?![A-Z])"},{"match":"(%|&|\\\\*\\\\*|\\\\*|\\\\+|-|/)","name":"keyword.operator.arithmetic.crystal"},{"match":"=","name":"keyword.operator.assignment.crystal"},{"match":"\\\\||~|>>","name":"keyword.operator.other.crystal"},{"match":":","name":"punctuation.separator.other.crystal"},{"match":"\\\\;","name":"punctuation.separator.statement.crystal"},{"match":",","name":"punctuation.separator.object.crystal"},{"match":"\\\\.|::","name":"punctuation.separator.method.crystal"},{"match":"\\\\{|\\\\}","name":"punctuation.section.scope.crystal"},{"match":"\\\\[|\\\\]","name":"punctuation.section.array.crystal"},{"match":"\\\\(|\\\\)","name":"punctuation.section.function.crystal"},{"begin":"(?=[a-zA-Z0-9_!?]+\\\\()","end":"(?<=\\\\))","name":"meta.function-call.crystal","patterns":[{"match":"([a-zA-Z0-9_!?]+)(?=\\\\()","name":"entity.name.function.crystal"},{"include":"$self"}]},{"comment":"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors","match":"((?<=\\\\W)\\\\b|^)\\\\w+\\\\b(?=\\\\s*([\\\\])}=+\\\\-\\\\*\\\\/\\\\^$\\\\,\\\\.]|<\\\\s|<<[\\\\s|\\\\.]))","name":"variable.other.crystal"}],"repository":{"escaped_char":{"comment":"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html","match":"\\\\\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\\\{[a-fA-F0-9 ]+\\\\}|.)","name":"constant.character.escape.crystal"},"heredoc":{"begin":"^<<-?\\\\w+","end":"$","patterns":[{"include":"$self"}]},"interpolated_crystal":{"patterns":[{"begin":"#\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.crystal"}},"contentName":"source.crystal","end":"(\\\\})","endCaptures":{"0":{"name":"punctuation.section.embedded.end.crystal"},"1":{"name":"source.crystal"}},"name":"meta.embedded.line.crystal","patterns":[{"include":"#nest_curly_and_self"},{"include":"$self"}],"repository":{"nest_curly_and_self":{"patterns":[{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly_and_self"}]},{"include":"$self"}]}}},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#@)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.instance.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#@@)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.class.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#\\\\$)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.global.crystal"}]},"nest_brackets":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#nest_brackets"}]},"nest_brackets_i":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},"nest_brackets_r":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#regex_sub"},{"include":"#nest_brackets_r"}]},"nest_curly":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly"}]},"nest_curly_and_self":{"patterns":[{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly_and_self"}]},{"include":"$self"}]},"nest_curly_i":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},"nest_curly_r":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#regex_sub"},{"include":"#nest_curly_r"}]},"nest_ltgt":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#nest_ltgt"}]},"nest_ltgt_i":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},"nest_ltgt_r":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#regex_sub"},{"include":"#nest_ltgt_r"}]},"nest_parens":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#nest_parens"}]},"nest_parens_i":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},"nest_parens_r":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#regex_sub"},{"include":"#nest_parens_r"}]},"regex_sub":{"patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"captures":{"1":{"name":"punctuation.definition.arbitrary-repetition.crystal"},"3":{"name":"punctuation.definition.arbitrary-repetition.crystal"}},"match":"({)\\\\d+(,\\\\d+)?(})","name":"string.regexp.arbitrary-repetition.crystal"},{"begin":"\\\\[(?:\\\\^?])?","captures":{"0":{"name":"punctuation.definition.character-class.crystal"}},"end":"]","name":"string.regexp.character-class.crystal","patterns":[{"include":"#escaped_char"}]},{"begin":"\\\\(","captures":{"0":{"name":"punctuation.definition.group.crystal"}},"end":"\\\\)","name":"string.regexp.group.crystal","patterns":[{"include":"#regex_sub"}]},{"captures":{"1":{"name":"punctuation.definition.comment.crystal"}},"comment":"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.","match":"(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$","name":"comment.line.number-sign.crystal"}]}},"scopeName":"source.crystal","embeddedLangs":["html","sql","css","c","javascript","shellscript"]}'))]));}};});
2
- //# sourceMappingURL=crystal-1913e34d.cjs.js.map
1
+ System.register(["./html-3718679d.cjs.js","./sql-e6e7243e.cjs.js","./css-80d60bac.cjs.js","./c-37e019c9.cjs.js","./javascript-ce720697.cjs.js","./shellscript-f4aa09bf.cjs.js"],function(_export,_context){"use strict";var e,t,n,a,r,i,s;function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2;}return{setters:[function(_html00aCjsJs){e=_html00aCjsJs["default"];},function(_sql00zCjsJs){t=_sql00zCjsJs["default"];},function(_css00cCjsJs){n=_css00cCjsJs["default"];},function(_c00ACjsJs){a=_c00ACjsJs["default"];},function(_javascript00bCjsJs){r=_javascript00bCjsJs["default"];},function(_shellscript00PCjsJs){i=_shellscript00PCjsJs["default"];}],execute:function execute(){_export("default",s=[].concat(_toConsumableArray(e),_toConsumableArray(t),_toConsumableArray(n),_toConsumableArray(a),_toConsumableArray(r),_toConsumableArray(i),[Object.freeze(JSON.parse('{"displayName":"Crystal","fileTypes":["cr"],"firstLineMatch":"^#!/.*\\\\bcrystal","foldingStartMarker":"^(\\\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\\\bend\\\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\\"(\\\\\\\\.|[^\\"])*+\\"|\'(\\\\\\\\.|[^\'])*+\'|[^#\\"\'])*(\\\\s(do|begin|case)|(?<!\\\\$)[-+=&|*/~%^<>~]\\\\s*+(if|unless)))\\\\b(?![^;]*+;.*?\\\\bend\\\\b)|(\\"(\\\\\\\\.|[^\\"])*+\\"|\'(\\\\\\\\.|[^\'])*+\'|[^#\\"\'])*(\\\\{(?![^}]*+\\\\})|\\\\[(?![^\\\\]]*+\\\\]))).*$|[#].*?\\\\(fold\\\\)\\\\s*+$","foldingStopMarker":"((^|;)\\\\s*+end\\\\s*+([#].*)?$|(^|;)\\\\s*+end\\\\..*$|^\\\\s*+[}\\\\]],?\\\\s*+([#].*)?$|[#].*?\\\\(end\\\\)\\\\s*+$|^=end)","name":"crystal","patterns":[{"captures":{"1":{"name":"keyword.control.class.crystal"},"2":{"name":"keyword.control.class.crystal"},"3":{"name":"entity.name.type.class.crystal"},"5":{"name":"punctuation.separator.crystal"},"6":{"name":"support.class.other.type-param.crystal"},"7":{"name":"entity.other.inherited-class.crystal"},"8":{"name":"punctuation.separator.crystal"},"9":{"name":"punctuation.separator.crystal"},"10":{"name":"support.class.other.type-param.crystal"},"11":{"name":"punctuation.definition.variable.crystal"}},"match":"^\\\\s*(abstract)?\\\\s*(class|struct|union|annotation|enum)\\\\s+(([.A-Z_:\\\\x{80}-\\\\x{10FFFF}][.\\\\w:\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([,\\\\s.a-zA-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+)\\\\))?(\\\\s*(<)\\\\s*[.:A-Z\\\\x{80}-\\\\x{10FFFF}][.:\\\\w\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([.a-zA-Z0-9_:]+\\\\s,)\\\\))?)?)|((<<)\\\\s*[.A-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+))","name":"meta.class.crystal"},{"captures":{"1":{"name":"keyword.control.module.crystal"},"2":{"name":"entity.name.type.module.crystal"},"3":{"name":"entity.other.inherited-class.module.first.crystal"},"4":{"name":"punctuation.separator.inheritance.crystal"},"5":{"name":"entity.other.inherited-class.module.second.crystal"},"6":{"name":"punctuation.separator.inheritance.crystal"},"7":{"name":"entity.other.inherited-class.module.third.crystal"},"8":{"name":"punctuation.separator.inheritance.crystal"}},"match":"^\\\\s*(module)\\\\s+(([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))*[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)","name":"meta.module.crystal"},{"captures":{"1":{"name":"keyword.control.lib.crystal"},"2":{"name":"entity.name.type.lib.crystal"},"3":{"name":"entity.other.inherited-class.lib.first.crystal"},"4":{"name":"punctuation.separator.inheritance.crystal"},"5":{"name":"entity.other.inherited-class.lib.second.crystal"},"6":{"name":"punctuation.separator.inheritance.crystal"},"7":{"name":"entity.other.inherited-class.lib.third.crystal"},"8":{"name":"punctuation.separator.inheritance.crystal"}},"match":"^\\\\s*(lib)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)","name":"meta.lib.crystal"},{"captures":{"1":{"name":"keyword.control.lib.type.crystal"},"2":{"name":"entity.name.lib.type.crystal"},"3":{"name":"keyword.control.lib.crystal"},"4":{"name":"entity.name.lib.type.value.crystal"}},"comment":"type in lib","match":"(?<!\\\\.)\\\\b(type)\\\\s+([A-Z]\\\\w+)\\\\s*(=)\\\\s*(.+)","name":"meta.lib.type.crystal"},{"comment":"everything being a reserved word, not a value, and needing a \'end\' is a..","match":"(?<!\\\\.)\\\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\\\b(?![?!:])","name":"keyword.control.crystal"},{"comment":"everything being a reserved word, not a value, and not needing a \'end\' is a..","match":"(?<!\\\\.)\\\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\\\b(?![?!:])","name":"keyword.control.primary.crystal"},{"comment":"everything being a spec keyword, not a value, and needing a block is a..","match":"(?<!\\\\.)\\\\b(describe|context|it|expect_raises)\\\\b(?![?!:])","name":"keyword.control.crystal"},{"comment":"contextual smart pair support for block parameters","match":"(?<!\\\\.)\\\\bdo\\\\b\\\\s*","name":"keyword.control.start-block.crystal"},{"comment":"contextual smart pair support","match":"(?<=\\\\{)(\\\\s+)","name":"meta.syntax.crystal.start-block"},{"comment":"Just as above but being not a logical operation","match":"(?<!\\\\.)\\\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\\\b(?![?!:])|\\\\.(is_a\\\\?|nil\\\\?|responds_to\\\\?|as\\\\?|as\\b)","name":"keyword.control.pseudo-method.crystal"},{"match":"\\\\bnil\\\\b(?![?!:])","name":"constant.language.nil.crystal"},{"match":"\\\\b(true|false)\\\\b(?![?!:])","name":"constant.language.boolean.crystal"},{"match":"\\\\b(__(DIR|FILE|LINE|END_LINE)__)\\\\b(?![?!:])","name":"variable.language.crystal"},{"match":"\\\\b(self)\\\\b(?![?!:])","name":"variable.language.self.crystal"},{"comment":"https://crystal-lang.org/api/0.36.1/Object.html#macro-summary","match":"(?<!\\\\.)\\\\b(((class_)?((getter|property)\\\\b[!?]?|setter\\\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\\\b)(?![?!:])","name":"support.function.kernel.crystal"},{"begin":"\\\\b(require)\\\\b","captures":{"1":{"name":"keyword.other.special-method.crystal"}},"end":"$|(?=#)","name":"meta.require.crystal","patterns":[{"include":"$self"}]},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?","name":"variable.other.readwrite.instance.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(@@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?","name":"variable.other.readwrite.class.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(\\\\$)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.global.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(?!%[Qxrqwi]?[(\\\\[{<\\\\|])%([a-zA-Z_]\\\\w*\\\\.)*[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.fresh.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(\\\\$)(!|@|&|`|\'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\"|-[0adFiIlpv])","name":"variable.other.readwrite.global.pre-defined.crystal"},{"begin":"\\\\b(ENV)\\\\[","beginCaptures":{"1":{"name":"variable.other.constant.crystal"}},"end":"\\\\]","name":"meta.environment-variable.crystal","patterns":[{"include":"$self"}]},{"comment":"Literals name of Crystal","match":"\\\\b[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*","name":"support.class.crystal"},{"comment":"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html","match":"(?<!\\\\.)\\\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\\\b(?![?!:])","name":"support.function.kernel.crystal"},{"comment":"Constant name in any where","match":"\\\\b[_A-Z]+\\\\b","name":"variable.other.constant.crystal"},{"begin":"(?=def\\\\b)(?<=^|\\\\s)(def)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?))\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.def.crystal"},"2":{"name":"entity.name.function.crystal"},"3":{"name":"punctuation.definition.parameters.crystal"}},"comment":"The method pattern comes from the symbol pattern. See there for an explanation.","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.crystal"}},"name":"meta.function.method.with-arguments.crystal","patterns":[{"begin":"(?![\\\\s,)])","end":"(?=,|\\\\)\\\\s*)","patterns":[{"captures":{"1":{"name":"storage.type.variable.crystal"},"2":{"name":"constant.other.symbol.hashkey.parameter.function.crystal"},"3":{"name":"punctuation.definition.constant.hashkey.crystal"},"4":{"name":"variable.parameter.function.crystal"}},"match":"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))"},{"include":"$self"}]}]},{"captures":{"1":{"name":"keyword.control.def.crystal"},"3":{"name":"entity.name.function.crystal"}},"comment":" the optional name is just to catch the def also without a method-name","match":"(?=def\\\\b)(?<=^|\\\\s)(def)\\\\b(\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?)))?","name":"meta.function.method.without-arguments.crystal"},{"comment":"Floating point literal (fraction)","match":"\\\\b\\\\d[0-9_]*\\\\.\\\\d[0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Floating point literal (exponent)","match":"\\\\b\\\\d[0-9_]*(\\\\.\\\\d[0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Floating point literal (typed)","match":"\\\\b\\\\d[0-9_]*(\\\\.\\\\d[0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\\\b","name":"constant.numeric.float.crystal"},{"comment":"Integer literal (decimal)","match":"\\\\b(?!0\\\\d)\\\\d[0-9_]*([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.decimal.crystal"},{"comment":"Integer literal (hexadecimal)","match":"\\\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.hexadecimal.crystal"},{"comment":"Integer literal (octal)","match":"\\\\b0o[0-7_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.octal.crystal"},{"comment":"Integer literal (binary)","match":"\\\\b0b[01_]+([ui](8|16|32|64|128))?\\\\b","name":"constant.numeric.integer.binary.crystal"},{"begin":":\'","beginCaptures":{"0":{"name":"punctuation.definition.symbol.begin.crystal"}},"comment":"symbol literal with \'\' delimiter","end":"\'","endCaptures":{"0":{"name":"punctuation.definition.symbol.end.crystal"}},"name":"constant.other.symbol.crystal","patterns":[{"match":"\\\\\\\\[\'\\\\\\\\]","name":"constant.character.escape.crystal"}]},{"begin":":\\"","beginCaptures":{"0":{"name":"punctuation.section.symbol.begin.crystal"}},"comment":"symbol literal with \\"\\" delimiter","end":"\\"","endCaptures":{"0":{"name":"punctuation.section.symbol.end.crystal"}},"name":"constant.other.symbol.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"comment":"Needs higher precedence than regular expressions.","match":"(?<!\\\\()/=","name":"keyword.operator.assignment.augmented.crystal"},{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"string literal with \'\' delimiter","end":"\'","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.single.crystal","patterns":[{"match":"\\\\\\\\\'|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"}]},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"string literal with interpolation and \\"\\" delimiter","end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.double.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allows for interpolation)","end":"`","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"%x\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},{"begin":"%x\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},{"begin":"%x<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},{"begin":"%x\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},{"begin":"%x\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"execute string (allow for interpolation)","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.interpolated.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?:^|(?<=[=>~(?:\\\\[,|&;]|[\\\\s;]if\\\\s|[\\\\s;]elsif\\\\s|[\\\\s;]while\\\\s|[\\\\s;]unless\\\\s|[\\\\s;]when\\\\s|[\\\\s;]assert_match\\\\s|[\\\\s;]or\\\\s|[\\\\s;]and\\\\s|[\\\\s;]not\\\\s|[\\\\s.]index\\\\s|[\\\\s.]scan\\\\s|[\\\\s.]sub\\\\s|[\\\\s.]sub!\\\\s|[\\\\s.]gsub\\\\s|[\\\\s.]gsub!\\\\s|[\\\\s.]match\\\\s)|(?<=^when\\\\s|^if\\\\s|^elsif\\\\s|^while\\\\s|^unless\\\\s))\\\\s*((/))(?![*+{}?])","captures":{"1":{"name":"string.regexp.classic.crystal"},"2":{"name":"punctuation.definition.string.crystal"}},"comment":"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp","contentName":"string.regexp.classic.crystal","end":"((/[imsx]*))","patterns":[{"include":"#regex_sub"}]},{"begin":"%r\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\}[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_curly_r"}]},{"begin":"%r\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\][imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_brackets_r"}]},{"begin":"%r\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\)[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_parens_r"}]},{"begin":"%r<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":">[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"},{"include":"#nest_ltgt_r"}]},{"begin":"%r\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"regular expressions (literal)","end":"\\\\|[imsx]*","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.regexp.mod-r.crystal","patterns":[{"include":"#regex_sub"}]},{"begin":"%Q?\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation ()","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},{"begin":"%Q?\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation []","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},{"begin":"%Q?<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation <>","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},{"begin":"%Q?\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation -- {}","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.double.crystal.mod","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},{"begin":"%Q\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal capable of interpolation -- ||","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.upper.crystal","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"%[qwi]\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- ()","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_parens"}]},{"begin":"%[qwi]<","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- <>","end":">","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\>|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_ltgt"}]},{"begin":"%[qwi]\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- []","end":"\\\\]","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_brackets"}]},{"begin":"%[qwi]\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- {}","end":"\\\\}","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"match":"\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\","name":"constant.character.escape.crystal"},{"include":"#nest_curly"}]},{"begin":"%[qwi]\\\\|","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"literal incapable of interpolation -- ||","end":"\\\\|","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.quoted.other.literal.lower.crystal","patterns":[{"comment":"Cant be named because its not necessarily an escape.","match":"\\\\\\\\."}]},{"captures":{"1":{"name":"punctuation.definition.constant.crystal"}},"comment":"symbols","match":"(?<!:)(:)(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\][?=]?|@@?[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)","name":"constant.other.symbol.crystal"},{"captures":{"1":{"name":"punctuation.definition.constant.crystal"}},"comment":"symbols","match":"(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!])?)(:)(?!:)","name":"constant.other.symbol.crystal.19syntax"},{"captures":{"1":{"name":"punctuation.definition.comment.crystal"}},"match":"(?:^[ \\\\t]+)?(#).*$\\\\n?","name":"comment.line.number-sign.crystal"},{"match":"(?<!}})\\\\b_([\\\\w]+[?!]?)\\\\b(?!\\\\()","name":"comment.unused.crystal"},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded HTML and indented terminator","contentName":"text.html.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.html.crystal","patterns":[{"include":"#heredoc"},{"include":"text.html.basic"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded SQL and indented terminator","contentName":"text.sql.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.sql.crystal","patterns":[{"include":"#heredoc"},{"include":"source.sql"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded css and intented terminator","contentName":"text.css.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.css.crystal","patterns":[{"include":"#heredoc"},{"include":"source.css"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded c++ and intented terminator","contentName":"text.c++.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.cplusplus.crystal","patterns":[{"include":"#heredoc"},{"include":"source.c++"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded c++ and intented terminator","contentName":"text.c.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.c.crystal","patterns":[{"include":"#heredoc"},{"include":"source.c"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded javascript and intented terminator","contentName":"text.js.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.js.crystal","patterns":[{"include":"#heredoc"},{"include":"source.js"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded javascript and intented terminator","contentName":"text.js.jquery.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.js.jquery.crystal","patterns":[{"include":"#heredoc"},{"include":"source.js.jquery"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded shell and intented terminator","contentName":"text.shell.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.shell.crystal","patterns":[{"include":"#heredoc"},{"include":"source.shell"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\'?)((?:[_\\\\w]+_|)CRYSTAL)\\\\b\\\\1)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with embedded crystal and intented terminator","contentName":"text.crystal.embedded.crystal","end":"\\\\s*\\\\2\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.embedded.crystal.crystal","patterns":[{"include":"#heredoc"},{"include":"source.crystal"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?><<-\'(\\\\w+)\')","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with indented terminator","end":"\\\\s*\\\\1\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.heredoc.crystal","patterns":[{"include":"#heredoc"},{"include":"#escaped_char"}]},{"begin":"(?><<-(\\\\w+)\\\\b)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.crystal"}},"comment":"heredoc with indented terminator","end":"\\\\s*\\\\1\\\\b","endCaptures":{"0":{"name":"punctuation.definition.string.end.crystal"}},"name":"string.unquoted.heredoc.crystal","patterns":[{"include":"#heredoc"},{"include":"#interpolated_crystal"},{"include":"#escaped_char"}]},{"begin":"(?<={|{\\\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\\\s|^do\\\\s)(\\\\|)","captures":{"1":{"name":"punctuation.separator.variable.crystal"}},"end":"(?<!\\\\|)(\\\\|)(?!\\\\|)","patterns":[{"include":"source.crystal"},{"match":"[_a-zA-Z][_a-zA-Z0-9]*","name":"variable.other.block.crystal"},{"match":",","name":"punctuation.separator.variable.crystal"}]},{"match":"=>","name":"punctuation.separator.key-value"},{"match":"->","name":"support.function.kernel.crystal"},{"match":"<<=|%=|&{1,2}=|\\\\*=|\\\\*\\\\*=|\\\\+=|-=|\\\\^=|\\\\|{1,2}=|<<","name":"keyword.operator.assignment.augmented.crystal"},{"match":"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?","name":"keyword.operator.comparison.crystal"},{"match":"(?<=^|[ \\\\t])!|&&|\\\\|\\\\||\\\\^","name":"keyword.operator.logical.crystal"},{"match":"(\\\\{\\\\%|\\\\%\\\\}|\\\\{\\\\{|\\\\}\\\\})","name":"keyword.operator.macro.crystal"},{"captures":{"1":{"name":"punctuation.separator.method.crystal"}},"comment":"Safe navigation operator","match":"(&\\\\.)\\\\s*(?![A-Z])"},{"match":"(%|&|\\\\*\\\\*|\\\\*|\\\\+|-|/)","name":"keyword.operator.arithmetic.crystal"},{"match":"=","name":"keyword.operator.assignment.crystal"},{"match":"\\\\||~|>>","name":"keyword.operator.other.crystal"},{"match":":","name":"punctuation.separator.other.crystal"},{"match":"\\\\;","name":"punctuation.separator.statement.crystal"},{"match":",","name":"punctuation.separator.object.crystal"},{"match":"\\\\.|::","name":"punctuation.separator.method.crystal"},{"match":"\\\\{|\\\\}","name":"punctuation.section.scope.crystal"},{"match":"\\\\[|\\\\]","name":"punctuation.section.array.crystal"},{"match":"\\\\(|\\\\)","name":"punctuation.section.function.crystal"},{"begin":"(?=[a-zA-Z0-9_!?]+\\\\()","end":"(?<=\\\\))","name":"meta.function-call.crystal","patterns":[{"match":"([a-zA-Z0-9_!?]+)(?=\\\\()","name":"entity.name.function.crystal"},{"include":"$self"}]},{"comment":"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors","match":"((?<=\\\\W)\\\\b|^)\\\\w+\\\\b(?=\\\\s*([\\\\])}=+\\\\-\\\\*\\\\/\\\\^$\\\\,\\\\.]|<\\\\s|<<[\\\\s|\\\\.]))","name":"variable.other.crystal"}],"repository":{"escaped_char":{"comment":"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html","match":"\\\\\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\\\{[a-fA-F0-9 ]+\\\\}|.)","name":"constant.character.escape.crystal"},"heredoc":{"begin":"^<<-?\\\\w+","end":"$","patterns":[{"include":"$self"}]},"interpolated_crystal":{"patterns":[{"begin":"#\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.crystal"}},"contentName":"source.crystal","end":"(\\\\})","endCaptures":{"0":{"name":"punctuation.section.embedded.end.crystal"},"1":{"name":"source.crystal"}},"name":"meta.embedded.line.crystal","patterns":[{"include":"#nest_curly_and_self"},{"include":"$self"}],"repository":{"nest_curly_and_self":{"patterns":[{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly_and_self"}]},{"include":"$self"}]}}},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#@)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.instance.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#@@)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.class.crystal"},{"captures":{"1":{"name":"punctuation.definition.variable.crystal"}},"match":"(#\\\\$)[a-zA-Z_]\\\\w*","name":"variable.other.readwrite.global.crystal"}]},"nest_brackets":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#nest_brackets"}]},"nest_brackets_i":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_brackets_i"}]},"nest_brackets_r":{"begin":"\\\\[","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\]","patterns":[{"include":"#regex_sub"},{"include":"#nest_brackets_r"}]},"nest_curly":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly"}]},"nest_curly_and_self":{"patterns":[{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#nest_curly_and_self"}]},{"include":"$self"}]},"nest_curly_i":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_curly_i"}]},"nest_curly_r":{"begin":"\\\\{","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\}","patterns":[{"include":"#regex_sub"},{"include":"#nest_curly_r"}]},"nest_ltgt":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#nest_ltgt"}]},"nest_ltgt_i":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_ltgt_i"}]},"nest_ltgt_r":{"begin":"<","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":">","patterns":[{"include":"#regex_sub"},{"include":"#nest_ltgt_r"}]},"nest_parens":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#nest_parens"}]},"nest_parens_i":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"include":"#nest_parens_i"}]},"nest_parens_r":{"begin":"\\\\(","captures":{"0":{"name":"punctuation.section.scope.crystal"}},"end":"\\\\)","patterns":[{"include":"#regex_sub"},{"include":"#nest_parens_r"}]},"regex_sub":{"patterns":[{"include":"#interpolated_crystal"},{"include":"#escaped_char"},{"captures":{"1":{"name":"punctuation.definition.arbitrary-repetition.crystal"},"3":{"name":"punctuation.definition.arbitrary-repetition.crystal"}},"match":"({)\\\\d+(,\\\\d+)?(})","name":"string.regexp.arbitrary-repetition.crystal"},{"begin":"\\\\[(?:\\\\^?])?","captures":{"0":{"name":"punctuation.definition.character-class.crystal"}},"end":"]","name":"string.regexp.character-class.crystal","patterns":[{"include":"#escaped_char"}]},{"begin":"\\\\(","captures":{"0":{"name":"punctuation.definition.group.crystal"}},"end":"\\\\)","name":"string.regexp.group.crystal","patterns":[{"include":"#regex_sub"}]},{"captures":{"1":{"name":"punctuation.definition.comment.crystal"}},"comment":"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.","match":"(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$","name":"comment.line.number-sign.crystal"}]}},"scopeName":"source.crystal","embeddedLangs":["html","sql","css","c","javascript","shellscript"]}'))]));}};});
2
+ //# sourceMappingURL=crystal-5458e62a.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crystal-1913e34d.cjs.js","sources":["../../../node_modules/shiki/dist/langs/crystal.mjs"],"sourcesContent":["import html from './html.mjs'\nimport sql from './sql.mjs'\nimport css from './css.mjs'\nimport c from './c.mjs'\nimport javascript from './javascript.mjs'\nimport shellscript from './shellscript.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Crystal\\\",\\\"fileTypes\\\":[\\\"cr\\\"],\\\"firstLineMatch\\\":\\\"^#!/.*\\\\\\\\bcrystal\\\",\\\"foldingStartMarker\\\":\\\"^(\\\\\\\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\\\\\\\bend\\\\\\\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\\\\\\\"(\\\\\\\\\\\\\\\\.|[^\\\\\\\"])*+\\\\\\\"|'(\\\\\\\\\\\\\\\\.|[^'])*+'|[^#\\\\\\\"'])*(\\\\\\\\s(do|begin|case)|(?<!\\\\\\\\$)[-+=&|*/~%^<>~]\\\\\\\\s*+(if|unless)))\\\\\\\\b(?![^;]*+;.*?\\\\\\\\bend\\\\\\\\b)|(\\\\\\\"(\\\\\\\\\\\\\\\\.|[^\\\\\\\"])*+\\\\\\\"|'(\\\\\\\\\\\\\\\\.|[^'])*+'|[^#\\\\\\\"'])*(\\\\\\\\{(?![^}]*+\\\\\\\\})|\\\\\\\\[(?![^\\\\\\\\]]*+\\\\\\\\]))).*$|[#].*?\\\\\\\\(fold\\\\\\\\)\\\\\\\\s*+$\\\",\\\"foldingStopMarker\\\":\\\"((^|;)\\\\\\\\s*+end\\\\\\\\s*+([#].*)?$|(^|;)\\\\\\\\s*+end\\\\\\\\..*$|^\\\\\\\\s*+[}\\\\\\\\]],?\\\\\\\\s*+([#].*)?$|[#].*?\\\\\\\\(end\\\\\\\\)\\\\\\\\s*+$|^=end)\\\",\\\"name\\\":\\\"crystal\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.class.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.class.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.class.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.other.type-param.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"10\\\":{\\\"name\\\":\\\"support.class.other.type-param.crystal\\\"},\\\"11\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(abstract)?\\\\\\\\s*(class|struct|union|annotation|enum)\\\\\\\\s+(([.A-Z_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][.\\\\\\\\w:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(\\\\\\\\(([,\\\\\\\\s.a-zA-Z0-9_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]+)\\\\\\\\))?(\\\\\\\\s*(<)\\\\\\\\s*[.:A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][.:\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(\\\\\\\\(([.a-zA-Z0-9_:]+\\\\\\\\s,)\\\\\\\\))?)?)|((<<)\\\\\\\\s*[.A-Z0-9_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]+))\\\",\\\"name\\\":\\\"meta.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.module.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.module.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.first.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.second.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.third.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(module)\\\\\\\\s+(([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))?([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))?([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))*[A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*)\\\",\\\"name\\\":\\\"meta.module.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.lib.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.lib.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.first.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.second.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.third.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(lib)\\\\\\\\s+(([A-Z]\\\\\\\\w*(::))?([A-Z]\\\\\\\\w*(::))?([A-Z]\\\\\\\\w*(::))*[A-Z]\\\\\\\\w*)\\\",\\\"name\\\":\\\"meta.lib.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.lib.type.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.lib.type.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.lib.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.lib.type.value.crystal\\\"}},\\\"comment\\\":\\\"type in lib\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(type)\\\\\\\\s+([A-Z]\\\\\\\\w+)\\\\\\\\s*(=)\\\\\\\\s*(.+)\\\",\\\"name\\\":\\\"meta.lib.type.crystal\\\"},{\\\"comment\\\":\\\"everything being a reserved word, not a value, and needing a 'end' is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.crystal\\\"},{\\\"comment\\\":\\\"everything being a reserved word, not a value, and not needing a 'end' is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.primary.crystal\\\"},{\\\"comment\\\":\\\"everything being a spec keyword, not a value, and needing a block is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(describe|context|it|expect_raises)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.crystal\\\"},{\\\"comment\\\":\\\"contextual smart pair support for block parameters\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\bdo\\\\\\\\b\\\\\\\\s*\\\",\\\"name\\\":\\\"keyword.control.start-block.crystal\\\"},{\\\"comment\\\":\\\"contextual smart pair support\\\",\\\"match\\\":\\\"(?<=\\\\\\\\{)(\\\\\\\\s+)\\\",\\\"name\\\":\\\"meta.syntax.crystal.start-block\\\"},{\\\"comment\\\":\\\"Just as above but being not a logical operation\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\\\\\\\b(?![?!:])|\\\\\\\\.(is_a\\\\\\\\?|nil\\\\\\\\?|responds_to\\\\\\\\?|as\\\\\\\\?|as\\\\b)\\\",\\\"name\\\":\\\"keyword.control.pseudo-method.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\bnil\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"constant.language.nil.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(true|false)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"constant.language.boolean.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(__(DIR|FILE|LINE|END_LINE)__)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"variable.language.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(self)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"variable.language.self.crystal\\\"},{\\\"comment\\\":\\\"https://crystal-lang.org/api/0.36.1/Object.html#macro-summary\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(((class_)?((getter|property)\\\\\\\\b[!?]?|setter\\\\\\\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\\\\\\\b)(?![?!:])\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(require)\\\\\\\\b\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.special-method.crystal\\\"}},\\\"end\\\":\\\"$|(?=#)\\\",\\\"name\\\":\\\"meta.require.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(@)[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*[?!=]?\\\",\\\"name\\\":\\\"variable.other.readwrite.instance.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(@@)[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*[?!=]?\\\",\\\"name\\\":\\\"variable.other.readwrite.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.global.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(?!%[Qxrqwi]?[(\\\\\\\\[{<\\\\\\\\|])%([a-zA-Z_]\\\\\\\\w*\\\\\\\\.)*[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.fresh.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(!|@|&|`|'|\\\\\\\\+|\\\\\\\\d+|~|=|/|\\\\\\\\\\\\\\\\|,|;|\\\\\\\\.|<|>|_|\\\\\\\\*|\\\\\\\\$|\\\\\\\\?|:|\\\\\\\"|-[0adFiIlpv])\\\",\\\"name\\\":\\\"variable.other.readwrite.global.pre-defined.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(ENV)\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"name\\\":\\\"meta.environment-variable.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"comment\\\":\\\"Literals name of Crystal\\\",\\\"match\\\":\\\"\\\\\\\\b[A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*\\\",\\\"name\\\":\\\"support.class.crystal\\\"},{\\\"comment\\\":\\\"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"comment\\\":\\\"Constant name in any where\\\",\\\"match\\\":\\\"\\\\\\\\b[_A-Z]+\\\\\\\\b\\\",\\\"name\\\":\\\"variable.other.constant.crystal\\\"},{\\\"begin\\\":\\\"(?=def\\\\\\\\b)(?<=^|\\\\\\\\s)(def)\\\\\\\\s+((?>[a-zA-Z_]\\\\\\\\w*(?>\\\\\\\\.|::))?(?>[a-zA-Z_]\\\\\\\\w*(?>[?!]|=(?!>))?|\\\\\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[][?=]?|\\\\\\\\[]=?))\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.def.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.crystal\\\"}},\\\"comment\\\":\\\"The method pattern comes from the symbol pattern. See there for an explanation.\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.crystal\\\"}},\\\"name\\\":\\\"meta.function.method.with-arguments.crystal\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?![\\\\\\\\s,)])\\\",\\\"end\\\":\\\"(?=,|\\\\\\\\)\\\\\\\\s*)\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.variable.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.symbol.hashkey.parameter.function.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.constant.hashkey.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.function.crystal\\\"}},\\\"match\\\":\\\"\\\\\\\\G([&*]?)(?:([_a-zA-Z]\\\\\\\\w*(:))|([_a-zA-Z]\\\\\\\\w*))\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.def.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.crystal\\\"}},\\\"comment\\\":\\\" the optional name is just to catch the def also without a method-name\\\",\\\"match\\\":\\\"(?=def\\\\\\\\b)(?<=^|\\\\\\\\s)(def)\\\\\\\\b(\\\\\\\\s+((?>[a-zA-Z_]\\\\\\\\w*(?>\\\\\\\\.|::))?(?>[a-zA-Z_]\\\\\\\\w*(?>[?!]|=(?!>))?|\\\\\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[][?=]?|\\\\\\\\[]=?)))?\\\",\\\"name\\\":\\\"meta.function.method.without-arguments.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (fraction)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*\\\\\\\\.\\\\\\\\d[0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (exponent)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*(\\\\\\\\.\\\\\\\\d[0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (typed)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*(\\\\\\\\.\\\\\\\\d[0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (decimal)\\\",\\\"match\\\":\\\"\\\\\\\\b(?!0\\\\\\\\d)\\\\\\\\d[0-9_]*([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.decimal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (hexadecimal)\\\",\\\"match\\\":\\\"\\\\\\\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.hexadecimal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (octal)\\\",\\\"match\\\":\\\"\\\\\\\\b0o[0-7_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.octal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (binary)\\\",\\\"match\\\":\\\"\\\\\\\\b0b[01_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.binary.crystal\\\"},{\\\"begin\\\":\\\":'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.symbol.begin.crystal\\\"}},\\\"comment\\\":\\\"symbol literal with '' delimiter\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.symbol.end.crystal\\\"}},\\\"name\\\":\\\"constant.other.symbol.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\['\\\\\\\\\\\\\\\\]\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"}]},{\\\"begin\\\":\\\":\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.symbol.begin.crystal\\\"}},\\\"comment\\\":\\\"symbol literal with \\\\\\\"\\\\\\\" delimiter\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.symbol.end.crystal\\\"}},\\\"name\\\":\\\"constant.other.symbol.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"comment\\\":\\\"Needs higher precedence than regular expressions.\\\",\\\"match\\\":\\\"(?<!\\\\\\\\()/=\\\",\\\"name\\\":\\\"keyword.operator.assignment.augmented.crystal\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"string literal with '' delimiter\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.single.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\'|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"}]},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"string literal with interpolation and \\\\\\\"\\\\\\\" delimiter\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.double.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allows for interpolation)\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},{\\\"begin\\\":\\\"%x<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?:^|(?<=[=>~(?:\\\\\\\\[,|&;]|[\\\\\\\\s;]if\\\\\\\\s|[\\\\\\\\s;]elsif\\\\\\\\s|[\\\\\\\\s;]while\\\\\\\\s|[\\\\\\\\s;]unless\\\\\\\\s|[\\\\\\\\s;]when\\\\\\\\s|[\\\\\\\\s;]assert_match\\\\\\\\s|[\\\\\\\\s;]or\\\\\\\\s|[\\\\\\\\s;]and\\\\\\\\s|[\\\\\\\\s;]not\\\\\\\\s|[\\\\\\\\s.]index\\\\\\\\s|[\\\\\\\\s.]scan\\\\\\\\s|[\\\\\\\\s.]sub\\\\\\\\s|[\\\\\\\\s.]sub!\\\\\\\\s|[\\\\\\\\s.]gsub\\\\\\\\s|[\\\\\\\\s.]gsub!\\\\\\\\s|[\\\\\\\\s.]match\\\\\\\\s)|(?<=^when\\\\\\\\s|^if\\\\\\\\s|^elsif\\\\\\\\s|^while\\\\\\\\s|^unless\\\\\\\\s))\\\\\\\\s*((/))(?![*+{}?])\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.regexp.classic.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp\\\",\\\"contentName\\\":\\\"string.regexp.classic.crystal\\\",\\\"end\\\":\\\"((/[imsx]*))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\}[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_curly_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\][imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_brackets_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\)[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_parens_r\\\"}]},{\\\"begin\\\":\\\"%r<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\">[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_ltgt_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\|[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation ()\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation []\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},{\\\"begin\\\":\\\"%Q?<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation <>\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation -- {}\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.double.crystal.mod\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},{\\\"begin\\\":\\\"%Q\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation -- ||\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- ()\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_parens\\\"}]},{\\\"begin\\\":\\\"%[qwi]<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- <>\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\>|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_ltgt\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- []\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_brackets\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- {}\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_curly\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- ||\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"comment\\\":\\\"Cant be named because its not necessarily an escape.\\\",\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.crystal\\\"}},\\\"comment\\\":\\\"symbols\\\",\\\"match\\\":\\\"(?<!:)(:)(?>[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[\\\\\\\\][?=]?|@@?[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*)\\\",\\\"name\\\":\\\"constant.other.symbol.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.crystal\\\"}},\\\"comment\\\":\\\"symbols\\\",\\\"match\\\":\\\"(?>[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(?>[?!])?)(:)(?!:)\\\",\\\"name\\\":\\\"constant.other.symbol.crystal.19syntax\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.crystal\\\"}},\\\"match\\\":\\\"(?:^[ \\\\\\\\t]+)?(#).*$\\\\\\\\n?\\\",\\\"name\\\":\\\"comment.line.number-sign.crystal\\\"},{\\\"match\\\":\\\"(?<!}})\\\\\\\\b_([\\\\\\\\w]+[?!]?)\\\\\\\\b(?!\\\\\\\\()\\\",\\\"name\\\":\\\"comment.unused.crystal\\\"},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)HTML)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded HTML and indented terminator\\\",\\\"contentName\\\":\\\"text.html.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.html.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)SQL)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded SQL and indented terminator\\\",\\\"contentName\\\":\\\"text.sql.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.sql.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.sql\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CSS)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded css and intented terminator\\\",\\\"contentName\\\":\\\"text.css.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.css.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.css\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CPP)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded c++ and intented terminator\\\",\\\"contentName\\\":\\\"text.c++.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.cplusplus.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.c++\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)C)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded c++ and intented terminator\\\",\\\"contentName\\\":\\\"text.c.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.c.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.c\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded javascript and intented terminator\\\",\\\"contentName\\\":\\\"text.js.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.js.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.js\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)JQUERY)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded javascript and intented terminator\\\",\\\"contentName\\\":\\\"text.js.jquery.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.js.jquery.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.js.jquery\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)(?:SH|SHELL))\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded shell and intented terminator\\\",\\\"contentName\\\":\\\"text.shell.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.shell.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.shell\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CRYSTAL)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded crystal and intented terminator\\\",\\\"contentName\\\":\\\"text.crystal.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.crystal.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.crystal\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-'(\\\\\\\\w+)')\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with indented terminator\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\1\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.heredoc.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-(\\\\\\\\w+)\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with indented terminator\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\1\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.heredoc.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?<={|{\\\\\\\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\\\\\\\s|^do\\\\\\\\s)(\\\\\\\\|)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.variable.crystal\\\"}},\\\"end\\\":\\\"(?<!\\\\\\\\|)(\\\\\\\\|)(?!\\\\\\\\|)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.crystal\\\"},{\\\"match\\\":\\\"[_a-zA-Z][_a-zA-Z0-9]*\\\",\\\"name\\\":\\\"variable.other.block.crystal\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.variable.crystal\\\"}]},{\\\"match\\\":\\\"=>\\\",\\\"name\\\":\\\"punctuation.separator.key-value\\\"},{\\\"match\\\":\\\"->\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"match\\\":\\\"<<=|%=|&{1,2}=|\\\\\\\\*=|\\\\\\\\*\\\\\\\\*=|\\\\\\\\+=|-=|\\\\\\\\^=|\\\\\\\\|{1,2}=|<<\\\",\\\"name\\\":\\\"keyword.operator.assignment.augmented.crystal\\\"},{\\\"match\\\":\\\"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\\\\\t])\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.comparison.crystal\\\"},{\\\"match\\\":\\\"(?<=^|[ \\\\\\\\t])!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\^\\\",\\\"name\\\":\\\"keyword.operator.logical.crystal\\\"},{\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\%|\\\\\\\\%\\\\\\\\}|\\\\\\\\{\\\\\\\\{|\\\\\\\\}\\\\\\\\})\\\",\\\"name\\\":\\\"keyword.operator.macro.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.method.crystal\\\"}},\\\"comment\\\":\\\"Safe navigation operator\\\",\\\"match\\\":\\\"(&\\\\\\\\.)\\\\\\\\s*(?![A-Z])\\\"},{\\\"match\\\":\\\"(%|&|\\\\\\\\*\\\\\\\\*|\\\\\\\\*|\\\\\\\\+|-|/)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.crystal\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\||~|>>\\\",\\\"name\\\":\\\"keyword.operator.other.crystal\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.other.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\;\\\",\\\"name\\\":\\\"punctuation.separator.statement.crystal\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.object.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\.|::\\\",\\\"name\\\":\\\"punctuation.separator.method.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\{|\\\\\\\\}\\\",\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\[|\\\\\\\\]\\\",\\\"name\\\":\\\"punctuation.section.array.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\(|\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.section.function.crystal\\\"},{\\\"begin\\\":\\\"(?=[a-zA-Z0-9_!?]+\\\\\\\\()\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.function-call.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"([a-zA-Z0-9_!?]+)(?=\\\\\\\\()\\\",\\\"name\\\":\\\"entity.name.function.crystal\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"comment\\\":\\\"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors\\\",\\\"match\\\":\\\"((?<=\\\\\\\\W)\\\\\\\\b|^)\\\\\\\\w+\\\\\\\\b(?=\\\\\\\\s*([\\\\\\\\])}=+\\\\\\\\-\\\\\\\\*\\\\\\\\/\\\\\\\\^$\\\\\\\\,\\\\\\\\.]|<\\\\\\\\s|<<[\\\\\\\\s|\\\\\\\\.]))\\\",\\\"name\\\":\\\"variable.other.crystal\\\"}],\\\"repository\\\":{\\\"escaped_char\\\":{\\\"comment\\\":\\\"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html\\\",\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\\\\\\\{[a-fA-F0-9 ]+\\\\\\\\}|.)\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},\\\"heredoc\\\":{\\\"begin\\\":\\\"^<<-?\\\\\\\\w+\\\",\\\"end\\\":\\\"$\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},\\\"interpolated_crystal\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.crystal\\\"}},\\\"contentName\\\":\\\"source.crystal\\\",\\\"end\\\":\\\"(\\\\\\\\})\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.crystal\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.crystal\\\"}},\\\"name\\\":\\\"meta.embedded.line.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"},{\\\"include\\\":\\\"$self\\\"}],\\\"repository\\\":{\\\"nest_curly_and_self\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"}]},{\\\"include\\\":\\\"$self\\\"}]}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#@)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.instance.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#@@)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#\\\\\\\\$)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.global.crystal\\\"}]},\\\"nest_brackets\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_brackets\\\"}]},\\\"nest_brackets_i\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},\\\"nest_brackets_r\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_brackets_r\\\"}]},\\\"nest_curly\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly\\\"}]},\\\"nest_curly_and_self\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"nest_curly_i\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},\\\"nest_curly_r\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_curly_r\\\"}]},\\\"nest_ltgt\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_ltgt\\\"}]},\\\"nest_ltgt_i\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},\\\"nest_ltgt_r\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_ltgt_r\\\"}]},\\\"nest_parens\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_parens\\\"}]},\\\"nest_parens_i\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},\\\"nest_parens_r\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_parens_r\\\"}]},\\\"regex_sub\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arbitrary-repetition.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.arbitrary-repetition.crystal\\\"}},\\\"match\\\":\\\"({)\\\\\\\\d+(,\\\\\\\\d+)?(})\\\",\\\"name\\\":\\\"string.regexp.arbitrary-repetition.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\[(?:\\\\\\\\^?])?\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.crystal\\\"}},\\\"end\\\":\\\"]\\\",\\\"name\\\":\\\"string.regexp.character-class.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"string.regexp.group.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.crystal\\\"}},\\\"comment\\\":\\\"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\\\",\\\"match\\\":\\\"(?<=^|\\\\\\\\s)(#)\\\\\\\\s[[a-zA-Z0-9,. \\\\\\\\t?!-][^\\\\\\\\x{00}-\\\\\\\\x{7F}]]*$\\\",\\\"name\\\":\\\"comment.line.number-sign.crystal\\\"}]}},\\\"scopeName\\\":\\\"source.crystal\\\",\\\"embeddedLangs\\\":[\\\"html\\\",\\\"sql\\\",\\\"css\\\",\\\"c\\\",\\\"javascript\\\",\\\"shellscript\\\"]}\"))\n\nexport default [\n...html,\n...sql,\n...css,\n...c,\n...javascript,\n...shellscript,\nlang\n]\n"],"names":["crystal","html","sql","css","c","javascript","shellscript","Object","freeze","JSON","parse"],"mappings":"krDASeA,+BACZC,CAAAA,EAAAA,kBAAAA,CACAC,CACAC,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,CACAC,CACAC,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,CACAC,IARUC,MAAOC,CAAAA,MAAAA,CAAOC,IAAKC,CAAAA,KAAAA,CAAM","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"crystal-5458e62a.cjs.js","sources":["../../../node_modules/shiki/dist/langs/crystal.mjs"],"sourcesContent":["import html from './html.mjs'\nimport sql from './sql.mjs'\nimport css from './css.mjs'\nimport c from './c.mjs'\nimport javascript from './javascript.mjs'\nimport shellscript from './shellscript.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Crystal\\\",\\\"fileTypes\\\":[\\\"cr\\\"],\\\"firstLineMatch\\\":\\\"^#!/.*\\\\\\\\bcrystal\\\",\\\"foldingStartMarker\\\":\\\"^(\\\\\\\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\\\\\\\bend\\\\\\\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\\\\\\\"(\\\\\\\\\\\\\\\\.|[^\\\\\\\"])*+\\\\\\\"|'(\\\\\\\\\\\\\\\\.|[^'])*+'|[^#\\\\\\\"'])*(\\\\\\\\s(do|begin|case)|(?<!\\\\\\\\$)[-+=&|*/~%^<>~]\\\\\\\\s*+(if|unless)))\\\\\\\\b(?![^;]*+;.*?\\\\\\\\bend\\\\\\\\b)|(\\\\\\\"(\\\\\\\\\\\\\\\\.|[^\\\\\\\"])*+\\\\\\\"|'(\\\\\\\\\\\\\\\\.|[^'])*+'|[^#\\\\\\\"'])*(\\\\\\\\{(?![^}]*+\\\\\\\\})|\\\\\\\\[(?![^\\\\\\\\]]*+\\\\\\\\]))).*$|[#].*?\\\\\\\\(fold\\\\\\\\)\\\\\\\\s*+$\\\",\\\"foldingStopMarker\\\":\\\"((^|;)\\\\\\\\s*+end\\\\\\\\s*+([#].*)?$|(^|;)\\\\\\\\s*+end\\\\\\\\..*$|^\\\\\\\\s*+[}\\\\\\\\]],?\\\\\\\\s*+([#].*)?$|[#].*?\\\\\\\\(end\\\\\\\\)\\\\\\\\s*+$|^=end)\\\",\\\"name\\\":\\\"crystal\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.class.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.class.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.class.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.other.type-param.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.separator.crystal\\\"},\\\"10\\\":{\\\"name\\\":\\\"support.class.other.type-param.crystal\\\"},\\\"11\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(abstract)?\\\\\\\\s*(class|struct|union|annotation|enum)\\\\\\\\s+(([.A-Z_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][.\\\\\\\\w:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(\\\\\\\\(([,\\\\\\\\s.a-zA-Z0-9_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]+)\\\\\\\\))?(\\\\\\\\s*(<)\\\\\\\\s*[.:A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][.:\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(\\\\\\\\(([.a-zA-Z0-9_:]+\\\\\\\\s,)\\\\\\\\))?)?)|((<<)\\\\\\\\s*[.A-Z0-9_:\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]+))\\\",\\\"name\\\":\\\"meta.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.module.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.module.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.first.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.second.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.module.third.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(module)\\\\\\\\s+(([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))?([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))?([A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(::))*[A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*)\\\",\\\"name\\\":\\\"meta.module.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.lib.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.lib.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.first.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.second.crystal\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"},\\\"7\\\":{\\\"name\\\":\\\"entity.other.inherited-class.lib.third.crystal\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.separator.inheritance.crystal\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(lib)\\\\\\\\s+(([A-Z]\\\\\\\\w*(::))?([A-Z]\\\\\\\\w*(::))?([A-Z]\\\\\\\\w*(::))*[A-Z]\\\\\\\\w*)\\\",\\\"name\\\":\\\"meta.lib.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.lib.type.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.lib.type.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.lib.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.lib.type.value.crystal\\\"}},\\\"comment\\\":\\\"type in lib\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(type)\\\\\\\\s+([A-Z]\\\\\\\\w+)\\\\\\\\s*(=)\\\\\\\\s*(.+)\\\",\\\"name\\\":\\\"meta.lib.type.crystal\\\"},{\\\"comment\\\":\\\"everything being a reserved word, not a value, and needing a 'end' is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.crystal\\\"},{\\\"comment\\\":\\\"everything being a reserved word, not a value, and not needing a 'end' is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.primary.crystal\\\"},{\\\"comment\\\":\\\"everything being a spec keyword, not a value, and needing a block is a..\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(describe|context|it|expect_raises)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"keyword.control.crystal\\\"},{\\\"comment\\\":\\\"contextual smart pair support for block parameters\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\bdo\\\\\\\\b\\\\\\\\s*\\\",\\\"name\\\":\\\"keyword.control.start-block.crystal\\\"},{\\\"comment\\\":\\\"contextual smart pair support\\\",\\\"match\\\":\\\"(?<=\\\\\\\\{)(\\\\\\\\s+)\\\",\\\"name\\\":\\\"meta.syntax.crystal.start-block\\\"},{\\\"comment\\\":\\\"Just as above but being not a logical operation\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\\\\\\\b(?![?!:])|\\\\\\\\.(is_a\\\\\\\\?|nil\\\\\\\\?|responds_to\\\\\\\\?|as\\\\\\\\?|as\\\\b)\\\",\\\"name\\\":\\\"keyword.control.pseudo-method.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\bnil\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"constant.language.nil.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(true|false)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"constant.language.boolean.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(__(DIR|FILE|LINE|END_LINE)__)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"variable.language.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\b(self)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"variable.language.self.crystal\\\"},{\\\"comment\\\":\\\"https://crystal-lang.org/api/0.36.1/Object.html#macro-summary\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(((class_)?((getter|property)\\\\\\\\b[!?]?|setter\\\\\\\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\\\\\\\b)(?![?!:])\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(require)\\\\\\\\b\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.special-method.crystal\\\"}},\\\"end\\\":\\\"$|(?=#)\\\",\\\"name\\\":\\\"meta.require.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(@)[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*[?!=]?\\\",\\\"name\\\":\\\"variable.other.readwrite.instance.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(@@)[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*[?!=]?\\\",\\\"name\\\":\\\"variable.other.readwrite.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.global.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(?!%[Qxrqwi]?[(\\\\\\\\[{<\\\\\\\\|])%([a-zA-Z_]\\\\\\\\w*\\\\\\\\.)*[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.fresh.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(!|@|&|`|'|\\\\\\\\+|\\\\\\\\d+|~|=|/|\\\\\\\\\\\\\\\\|,|;|\\\\\\\\.|<|>|_|\\\\\\\\*|\\\\\\\\$|\\\\\\\\?|:|\\\\\\\"|-[0adFiIlpv])\\\",\\\"name\\\":\\\"variable.other.readwrite.global.pre-defined.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(ENV)\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"name\\\":\\\"meta.environment-variable.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"comment\\\":\\\"Literals name of Crystal\\\",\\\"match\\\":\\\"\\\\\\\\b[A-Z\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*\\\",\\\"name\\\":\\\"support.class.crystal\\\"},{\\\"comment\\\":\\\"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html\\\",\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\\\\\\\b(?![?!:])\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"comment\\\":\\\"Constant name in any where\\\",\\\"match\\\":\\\"\\\\\\\\b[_A-Z]+\\\\\\\\b\\\",\\\"name\\\":\\\"variable.other.constant.crystal\\\"},{\\\"begin\\\":\\\"(?=def\\\\\\\\b)(?<=^|\\\\\\\\s)(def)\\\\\\\\s+((?>[a-zA-Z_]\\\\\\\\w*(?>\\\\\\\\.|::))?(?>[a-zA-Z_]\\\\\\\\w*(?>[?!]|=(?!>))?|\\\\\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[][?=]?|\\\\\\\\[]=?))\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.def.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.crystal\\\"}},\\\"comment\\\":\\\"The method pattern comes from the symbol pattern. See there for an explanation.\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.crystal\\\"}},\\\"name\\\":\\\"meta.function.method.with-arguments.crystal\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?![\\\\\\\\s,)])\\\",\\\"end\\\":\\\"(?=,|\\\\\\\\)\\\\\\\\s*)\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.variable.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.symbol.hashkey.parameter.function.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.constant.hashkey.crystal\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.function.crystal\\\"}},\\\"match\\\":\\\"\\\\\\\\G([&*]?)(?:([_a-zA-Z]\\\\\\\\w*(:))|([_a-zA-Z]\\\\\\\\w*))\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.def.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.crystal\\\"}},\\\"comment\\\":\\\" the optional name is just to catch the def also without a method-name\\\",\\\"match\\\":\\\"(?=def\\\\\\\\b)(?<=^|\\\\\\\\s)(def)\\\\\\\\b(\\\\\\\\s+((?>[a-zA-Z_]\\\\\\\\w*(?>\\\\\\\\.|::))?(?>[a-zA-Z_]\\\\\\\\w*(?>[?!]|=(?!>))?|\\\\\\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[][?=]?|\\\\\\\\[]=?)))?\\\",\\\"name\\\":\\\"meta.function.method.without-arguments.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (fraction)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*\\\\\\\\.\\\\\\\\d[0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (exponent)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*(\\\\\\\\.\\\\\\\\d[0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Floating point literal (typed)\\\",\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d[0-9_]*(\\\\\\\\.\\\\\\\\d[0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (decimal)\\\",\\\"match\\\":\\\"\\\\\\\\b(?!0\\\\\\\\d)\\\\\\\\d[0-9_]*([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.decimal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (hexadecimal)\\\",\\\"match\\\":\\\"\\\\\\\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.hexadecimal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (octal)\\\",\\\"match\\\":\\\"\\\\\\\\b0o[0-7_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.octal.crystal\\\"},{\\\"comment\\\":\\\"Integer literal (binary)\\\",\\\"match\\\":\\\"\\\\\\\\b0b[01_]+([ui](8|16|32|64|128))?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.integer.binary.crystal\\\"},{\\\"begin\\\":\\\":'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.symbol.begin.crystal\\\"}},\\\"comment\\\":\\\"symbol literal with '' delimiter\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.symbol.end.crystal\\\"}},\\\"name\\\":\\\"constant.other.symbol.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\['\\\\\\\\\\\\\\\\]\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"}]},{\\\"begin\\\":\\\":\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.symbol.begin.crystal\\\"}},\\\"comment\\\":\\\"symbol literal with \\\\\\\"\\\\\\\" delimiter\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.symbol.end.crystal\\\"}},\\\"name\\\":\\\"constant.other.symbol.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"comment\\\":\\\"Needs higher precedence than regular expressions.\\\",\\\"match\\\":\\\"(?<!\\\\\\\\()/=\\\",\\\"name\\\":\\\"keyword.operator.assignment.augmented.crystal\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"string literal with '' delimiter\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.single.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\'|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"}]},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"string literal with interpolation and \\\\\\\"\\\\\\\" delimiter\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.double.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allows for interpolation)\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},{\\\"begin\\\":\\\"%x<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},{\\\"begin\\\":\\\"%x\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"execute string (allow for interpolation)\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.interpolated.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?:^|(?<=[=>~(?:\\\\\\\\[,|&;]|[\\\\\\\\s;]if\\\\\\\\s|[\\\\\\\\s;]elsif\\\\\\\\s|[\\\\\\\\s;]while\\\\\\\\s|[\\\\\\\\s;]unless\\\\\\\\s|[\\\\\\\\s;]when\\\\\\\\s|[\\\\\\\\s;]assert_match\\\\\\\\s|[\\\\\\\\s;]or\\\\\\\\s|[\\\\\\\\s;]and\\\\\\\\s|[\\\\\\\\s;]not\\\\\\\\s|[\\\\\\\\s.]index\\\\\\\\s|[\\\\\\\\s.]scan\\\\\\\\s|[\\\\\\\\s.]sub\\\\\\\\s|[\\\\\\\\s.]sub!\\\\\\\\s|[\\\\\\\\s.]gsub\\\\\\\\s|[\\\\\\\\s.]gsub!\\\\\\\\s|[\\\\\\\\s.]match\\\\\\\\s)|(?<=^when\\\\\\\\s|^if\\\\\\\\s|^elsif\\\\\\\\s|^while\\\\\\\\s|^unless\\\\\\\\s))\\\\\\\\s*((/))(?![*+{}?])\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.regexp.classic.crystal\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp\\\",\\\"contentName\\\":\\\"string.regexp.classic.crystal\\\",\\\"end\\\":\\\"((/[imsx]*))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\}[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_curly_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\][imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_brackets_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\)[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_parens_r\\\"}]},{\\\"begin\\\":\\\"%r<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\">[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_ltgt_r\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"regular expressions (literal)\\\",\\\"end\\\":\\\"\\\\\\\\|[imsx]*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.regexp.mod-r.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation ()\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation []\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},{\\\"begin\\\":\\\"%Q?<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation <>\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},{\\\"begin\\\":\\\"%Q?\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation -- {}\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.double.crystal.mod\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},{\\\"begin\\\":\\\"%Q\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal capable of interpolation -- ||\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.upper.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- ()\\\",\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_parens\\\"}]},{\\\"begin\\\":\\\"%[qwi]<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- <>\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\>|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_ltgt\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- []\\\",\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_brackets\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- {}\\\",\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},{\\\"include\\\":\\\"#nest_curly\\\"}]},{\\\"begin\\\":\\\"%[qwi]\\\\\\\\|\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"literal incapable of interpolation -- ||\\\",\\\"end\\\":\\\"\\\\\\\\|\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.quoted.other.literal.lower.crystal\\\",\\\"patterns\\\":[{\\\"comment\\\":\\\"Cant be named because its not necessarily an escape.\\\",\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.crystal\\\"}},\\\"comment\\\":\\\"symbols\\\",\\\"match\\\":\\\"(?<!:)(:)(?>[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\\\\\|]|\\\\\\\\*\\\\\\\\*?|=?~|[-+]@?|\\\\\\\\[\\\\\\\\][?=]?|@@?[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*)\\\",\\\"name\\\":\\\"constant.other.symbol.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.crystal\\\"}},\\\"comment\\\":\\\"symbols\\\",\\\"match\\\":\\\"(?>[a-zA-Z_\\\\\\\\x{80}-\\\\\\\\x{10FFFF}][\\\\\\\\w\\\\\\\\x{80}-\\\\\\\\x{10FFFF}]*(?>[?!])?)(:)(?!:)\\\",\\\"name\\\":\\\"constant.other.symbol.crystal.19syntax\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.crystal\\\"}},\\\"match\\\":\\\"(?:^[ \\\\\\\\t]+)?(#).*$\\\\\\\\n?\\\",\\\"name\\\":\\\"comment.line.number-sign.crystal\\\"},{\\\"match\\\":\\\"(?<!}})\\\\\\\\b_([\\\\\\\\w]+[?!]?)\\\\\\\\b(?!\\\\\\\\()\\\",\\\"name\\\":\\\"comment.unused.crystal\\\"},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)HTML)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded HTML and indented terminator\\\",\\\"contentName\\\":\\\"text.html.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.html.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)SQL)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded SQL and indented terminator\\\",\\\"contentName\\\":\\\"text.sql.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.sql.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.sql\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CSS)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded css and intented terminator\\\",\\\"contentName\\\":\\\"text.css.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.css.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.css\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CPP)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded c++ and intented terminator\\\",\\\"contentName\\\":\\\"text.c++.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.cplusplus.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.c++\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)C)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded c++ and intented terminator\\\",\\\"contentName\\\":\\\"text.c.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.c.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.c\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded javascript and intented terminator\\\",\\\"contentName\\\":\\\"text.js.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.js.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.js\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)JQUERY)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded javascript and intented terminator\\\",\\\"contentName\\\":\\\"text.js.jquery.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.js.jquery.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.js.jquery\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)(?:SH|SHELL))\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded shell and intented terminator\\\",\\\"contentName\\\":\\\"text.shell.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.shell.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.shell\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-('?)((?:[_\\\\\\\\w]+_|)CRYSTAL)\\\\\\\\b\\\\\\\\1)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with embedded crystal and intented terminator\\\",\\\"contentName\\\":\\\"text.crystal.embedded.crystal\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\2\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.embedded.crystal.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"source.crystal\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-'(\\\\\\\\w+)')\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with indented terminator\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\1\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.heredoc.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?><<-(\\\\\\\\w+)\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.crystal\\\"}},\\\"comment\\\":\\\"heredoc with indented terminator\\\",\\\"end\\\":\\\"\\\\\\\\s*\\\\\\\\1\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.crystal\\\"}},\\\"name\\\":\\\"string.unquoted.heredoc.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"(?<={|{\\\\\\\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\\\\\\\s|^do\\\\\\\\s)(\\\\\\\\|)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.variable.crystal\\\"}},\\\"end\\\":\\\"(?<!\\\\\\\\|)(\\\\\\\\|)(?!\\\\\\\\|)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.crystal\\\"},{\\\"match\\\":\\\"[_a-zA-Z][_a-zA-Z0-9]*\\\",\\\"name\\\":\\\"variable.other.block.crystal\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.variable.crystal\\\"}]},{\\\"match\\\":\\\"=>\\\",\\\"name\\\":\\\"punctuation.separator.key-value\\\"},{\\\"match\\\":\\\"->\\\",\\\"name\\\":\\\"support.function.kernel.crystal\\\"},{\\\"match\\\":\\\"<<=|%=|&{1,2}=|\\\\\\\\*=|\\\\\\\\*\\\\\\\\*=|\\\\\\\\+=|-=|\\\\\\\\^=|\\\\\\\\|{1,2}=|<<\\\",\\\"name\\\":\\\"keyword.operator.assignment.augmented.crystal\\\"},{\\\"match\\\":\\\"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\\\\\t])\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.comparison.crystal\\\"},{\\\"match\\\":\\\"(?<=^|[ \\\\\\\\t])!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\^\\\",\\\"name\\\":\\\"keyword.operator.logical.crystal\\\"},{\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\%|\\\\\\\\%\\\\\\\\}|\\\\\\\\{\\\\\\\\{|\\\\\\\\}\\\\\\\\})\\\",\\\"name\\\":\\\"keyword.operator.macro.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.method.crystal\\\"}},\\\"comment\\\":\\\"Safe navigation operator\\\",\\\"match\\\":\\\"(&\\\\\\\\.)\\\\\\\\s*(?![A-Z])\\\"},{\\\"match\\\":\\\"(%|&|\\\\\\\\*\\\\\\\\*|\\\\\\\\*|\\\\\\\\+|-|/)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.crystal\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\||~|>>\\\",\\\"name\\\":\\\"keyword.operator.other.crystal\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.other.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\;\\\",\\\"name\\\":\\\"punctuation.separator.statement.crystal\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.object.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\.|::\\\",\\\"name\\\":\\\"punctuation.separator.method.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\{|\\\\\\\\}\\\",\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\[|\\\\\\\\]\\\",\\\"name\\\":\\\"punctuation.section.array.crystal\\\"},{\\\"match\\\":\\\"\\\\\\\\(|\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.section.function.crystal\\\"},{\\\"begin\\\":\\\"(?=[a-zA-Z0-9_!?]+\\\\\\\\()\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.function-call.crystal\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"([a-zA-Z0-9_!?]+)(?=\\\\\\\\()\\\",\\\"name\\\":\\\"entity.name.function.crystal\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"comment\\\":\\\"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors\\\",\\\"match\\\":\\\"((?<=\\\\\\\\W)\\\\\\\\b|^)\\\\\\\\w+\\\\\\\\b(?=\\\\\\\\s*([\\\\\\\\])}=+\\\\\\\\-\\\\\\\\*\\\\\\\\/\\\\\\\\^$\\\\\\\\,\\\\\\\\.]|<\\\\\\\\s|<<[\\\\\\\\s|\\\\\\\\.]))\\\",\\\"name\\\":\\\"variable.other.crystal\\\"}],\\\"repository\\\":{\\\"escaped_char\\\":{\\\"comment\\\":\\\"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html\\\",\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\\\\\\\{[a-fA-F0-9 ]+\\\\\\\\}|.)\\\",\\\"name\\\":\\\"constant.character.escape.crystal\\\"},\\\"heredoc\\\":{\\\"begin\\\":\\\"^<<-?\\\\\\\\w+\\\",\\\"end\\\":\\\"$\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},\\\"interpolated_crystal\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.crystal\\\"}},\\\"contentName\\\":\\\"source.crystal\\\",\\\"end\\\":\\\"(\\\\\\\\})\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.crystal\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.crystal\\\"}},\\\"name\\\":\\\"meta.embedded.line.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"},{\\\"include\\\":\\\"$self\\\"}],\\\"repository\\\":{\\\"nest_curly_and_self\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"}]},{\\\"include\\\":\\\"$self\\\"}]}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#@)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.instance.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#@@)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.class.crystal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.crystal\\\"}},\\\"match\\\":\\\"(#\\\\\\\\$)[a-zA-Z_]\\\\\\\\w*\\\",\\\"name\\\":\\\"variable.other.readwrite.global.crystal\\\"}]},\\\"nest_brackets\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_brackets\\\"}]},\\\"nest_brackets_i\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_brackets_i\\\"}]},\\\"nest_brackets_r\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\]\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_brackets_r\\\"}]},\\\"nest_curly\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly\\\"}]},\\\"nest_curly_and_self\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_curly_and_self\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"nest_curly_i\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_curly_i\\\"}]},\\\"nest_curly_r\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\}\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_curly_r\\\"}]},\\\"nest_ltgt\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_ltgt\\\"}]},\\\"nest_ltgt_i\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_ltgt_i\\\"}]},\\\"nest_ltgt_r\\\":{\\\"begin\\\":\\\"<\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\">\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_ltgt_r\\\"}]},\\\"nest_parens\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#nest_parens\\\"}]},\\\"nest_parens_i\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"include\\\":\\\"#nest_parens_i\\\"}]},\\\"nest_parens_r\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.scope.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"},{\\\"include\\\":\\\"#nest_parens_r\\\"}]},\\\"regex_sub\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#interpolated_crystal\\\"},{\\\"include\\\":\\\"#escaped_char\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arbitrary-repetition.crystal\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.arbitrary-repetition.crystal\\\"}},\\\"match\\\":\\\"({)\\\\\\\\d+(,\\\\\\\\d+)?(})\\\",\\\"name\\\":\\\"string.regexp.arbitrary-repetition.crystal\\\"},{\\\"begin\\\":\\\"\\\\\\\\[(?:\\\\\\\\^?])?\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.crystal\\\"}},\\\"end\\\":\\\"]\\\",\\\"name\\\":\\\"string.regexp.character-class.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escaped_char\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.crystal\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"string.regexp.group.crystal\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_sub\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.crystal\\\"}},\\\"comment\\\":\\\"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\\\",\\\"match\\\":\\\"(?<=^|\\\\\\\\s)(#)\\\\\\\\s[[a-zA-Z0-9,. \\\\\\\\t?!-][^\\\\\\\\x{00}-\\\\\\\\x{7F}]]*$\\\",\\\"name\\\":\\\"comment.line.number-sign.crystal\\\"}]}},\\\"scopeName\\\":\\\"source.crystal\\\",\\\"embeddedLangs\\\":[\\\"html\\\",\\\"sql\\\",\\\"css\\\",\\\"c\\\",\\\"javascript\\\",\\\"shellscript\\\"]}\"))\n\nexport default [\n...html,\n...sql,\n...css,\n...c,\n...javascript,\n...shellscript,\nlang\n]\n"],"names":["crystal","html","sql","css","c","javascript","shellscript","Object","freeze","JSON","parse"],"mappings":"krDASeA,+BACZC,CAAAA,EAAAA,kBAAAA,CACAC,CACAC,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,CACAC,CACAC,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,CACAC,IARUC,MAAOC,CAAAA,MAAAA,CAAOC,IAAKC,CAAAA,KAAAA,CAAM","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- System.register(["./typescript-3c54cec9.cjs.js","./html-3718679d.cjs.js","./html-derivative-3723ba1c.cjs.js","./javascript-ce720697.cjs.js","./css-80d60bac.cjs.js"],function(_export,_context){"use strict";var e,t,n,a;function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2;}return{setters:[function(_typescript00pCjsJs){e=_typescript00pCjsJs["default"];},function(_html00aCjsJs){t=_html00aCjsJs["default"];},function(_htmlDerivative010CjsJs){n=_htmlDerivative010CjsJs["default"];},function(_javascript00bCjsJs){},function(_css00cCjsJs){}],execute:function execute(){_export("default",a=[].concat(_toConsumableArray(e),_toConsumableArray(t),_toConsumableArray(n),[Object.freeze(JSON.parse('{"displayName":"Edge","injections":{"text.html.edge - (meta.embedded | meta.tag | comment.block.edge), L:(text.html.edge meta.tag - (comment.block.edge | meta.embedded.block.edge)), L:(source.ts.embedded.html - (comment.block.edge | meta.embedded.block.edge))":{"patterns":[{"include":"#comment"},{"include":"#escapedMustache"},{"include":"#safeMustache"},{"include":"#mustache"},{"include":"#nonSeekableTag"},{"include":"#tag"}]}},"name":"edge","patterns":[{"include":"text.html.basic"},{"include":"text.html.derivative"}],"repository":{"comment":{"begin":"\\\\{{--","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.edge"}},"end":"--}}","endCaptures":{"0":{"name":"punctuation.definition.comment.end.edge"}},"name":"comment.block"},"escapedMustache":{"begin":"\\\\@{{","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.edge"}},"end":"\\\\}}","endCaptures":{"0":{"name":"punctuation.definition.comment.end.edge"}},"name":"comment.block"},"mustache":{"begin":"\\\\{{","beginCaptures":{"0":{"name":"punctuation.mustache.begin"}},"end":"\\\\}}","endCaptures":{"0":{"name":"punctuation.mustache.end"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"nonSeekableTag":{"captures":{"2":{"name":"support.function.edge"}},"match":"^(\\\\s*)((@{1,2})(!)?([a-zA-Z._]+))(~)?$","name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"safeMustache":{"begin":"\\\\{{{","beginCaptures":{"0":{"name":"punctuation.mustache.begin"}},"end":"\\\\}}}","endCaptures":{"0":{"name":"punctuation.mustache.end"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"tag":{"begin":"^(\\\\s*)((@{1,2})(!)?([a-zA-Z._]+)(\\\\s{0,2}))(\\\\()","beginCaptures":{"2":{"name":"support.function.edge"},"7":{"name":"punctuation.paren.open"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.paren.close"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]}},"scopeName":"text.html.edge","embeddedLangs":["typescript","html","html-derivative"]}'))]));}};});
2
- //# sourceMappingURL=edge-ef9e682b.cjs.js.map
1
+ System.register(["./typescript-3c54cec9.cjs.js","./html-3718679d.cjs.js","./html-derivative-3723ba1c.cjs.js","./javascript-ce720697.cjs.js","./css-80d60bac.cjs.js"],function(_export,_context){"use strict";var e,t,n,a;function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2;}return{setters:[function(_typescript00pCjsJs){e=_typescript00pCjsJs["default"];},function(_html00aCjsJs){t=_html00aCjsJs["default"];},function(_htmlDerivative011CjsJs){n=_htmlDerivative011CjsJs["default"];},function(_javascript00bCjsJs){},function(_css00cCjsJs){}],execute:function execute(){_export("default",a=[].concat(_toConsumableArray(e),_toConsumableArray(t),_toConsumableArray(n),[Object.freeze(JSON.parse('{"displayName":"Edge","injections":{"text.html.edge - (meta.embedded | meta.tag | comment.block.edge), L:(text.html.edge meta.tag - (comment.block.edge | meta.embedded.block.edge)), L:(source.ts.embedded.html - (comment.block.edge | meta.embedded.block.edge))":{"patterns":[{"include":"#comment"},{"include":"#escapedMustache"},{"include":"#safeMustache"},{"include":"#mustache"},{"include":"#nonSeekableTag"},{"include":"#tag"}]}},"name":"edge","patterns":[{"include":"text.html.basic"},{"include":"text.html.derivative"}],"repository":{"comment":{"begin":"\\\\{{--","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.edge"}},"end":"--}}","endCaptures":{"0":{"name":"punctuation.definition.comment.end.edge"}},"name":"comment.block"},"escapedMustache":{"begin":"\\\\@{{","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.edge"}},"end":"\\\\}}","endCaptures":{"0":{"name":"punctuation.definition.comment.end.edge"}},"name":"comment.block"},"mustache":{"begin":"\\\\{{","beginCaptures":{"0":{"name":"punctuation.mustache.begin"}},"end":"\\\\}}","endCaptures":{"0":{"name":"punctuation.mustache.end"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"nonSeekableTag":{"captures":{"2":{"name":"support.function.edge"}},"match":"^(\\\\s*)((@{1,2})(!)?([a-zA-Z._]+))(~)?$","name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"safeMustache":{"begin":"\\\\{{{","beginCaptures":{"0":{"name":"punctuation.mustache.begin"}},"end":"\\\\}}}","endCaptures":{"0":{"name":"punctuation.mustache.end"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]},"tag":{"begin":"^(\\\\s*)((@{1,2})(!)?([a-zA-Z._]+)(\\\\s{0,2}))(\\\\()","beginCaptures":{"2":{"name":"support.function.edge"},"7":{"name":"punctuation.paren.open"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.paren.close"}},"name":"meta.embedded.block.javascript","patterns":[{"include":"source.ts#expression"}]}},"scopeName":"text.html.edge","embeddedLangs":["typescript","html","html-derivative"]}'))]));}};});
2
+ //# sourceMappingURL=edge-cb04b11b.cjs.js.map