yanki 0.2.0

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 (259) hide show
  1. package/dist/abap-DXFkqnOI.js +816 -0
  2. package/dist/actionscript-3-D6NljDpC.js +1 -0
  3. package/dist/ada-CowR2XfX.js +1 -0
  4. package/dist/andromeeda-YxQm0tCS.js +1 -0
  5. package/dist/angular-html-CZfDmWtJ.js +16 -0
  6. package/dist/angular-ts-CIhYrOL5.js +666 -0
  7. package/dist/apache-rS0jd3Ly.js +1 -0
  8. package/dist/apex-Sfo2eW0G.js +274 -0
  9. package/dist/apl-DPLNWaKG.js +87 -0
  10. package/dist/applescript-BXKAgOFh.js +38 -0
  11. package/dist/ara-CG4fK2Nq.js +21 -0
  12. package/dist/asciidoc-C539GviS.js +1 -0
  13. package/dist/asm-PWN5J14X.js +1 -0
  14. package/dist/astro-71xeBtnw.js +32 -0
  15. package/dist/aurora-x-BaWyeHV_.js +1 -0
  16. package/dist/awk-i0IPvypD.js +1 -0
  17. package/dist/ayu-dark-Bn5gmY5k.js +1 -0
  18. package/dist/ballerina-T9ysyp6P.js +62 -0
  19. package/dist/bat-BPiaQZfK.js +1 -0
  20. package/dist/beancount-Urb1RsFe.js +1 -0
  21. package/dist/berry-CxrokwfH.js +1 -0
  22. package/dist/bibtex-BaedD2tq.js +1 -0
  23. package/dist/bicep-3ghuYFLd.js +1 -0
  24. package/dist/bin/cli.js +10 -0
  25. package/dist/blade-D3A5GssZ.js +831 -0
  26. package/dist/c-RCJZWN-0.js +81 -0
  27. package/dist/cadence-Bgpqy2XC.js +1 -0
  28. package/dist/catppuccin-frappe-BsOrZxH8.js +1 -0
  29. package/dist/catppuccin-latte-BYdKNJ10.js +1 -0
  30. package/dist/catppuccin-macchiato-DVLwECkk.js +1 -0
  31. package/dist/catppuccin-mocha-CEfge3mM.js +1 -0
  32. package/dist/clarity-CIekO_uJ.js +1 -0
  33. package/dist/clojure-BF6G6X0H.js +1 -0
  34. package/dist/cmake-DXZpi2gR.js +1 -0
  35. package/dist/cobol-Bi0pgIzz.js +1 -0
  36. package/dist/codeowners-CGmujMTu.js +1 -0
  37. package/dist/codeql-BOpLLL-w.js +1 -0
  38. package/dist/coffee-Cp6Hkwsd.js +100 -0
  39. package/dist/common-lisp-C3qUB5O8.js +301 -0
  40. package/dist/cpp-CeZn6MzL.js +186 -0
  41. package/dist/crystal-B5pCH4eR.js +25 -0
  42. package/dist/csharp-DISxKEhY.js +756 -0
  43. package/dist/css-CbYhyuC0.js +505 -0
  44. package/dist/csv-B2DkETJQ.js +1 -0
  45. package/dist/cue-C6Aznpr-.js +1 -0
  46. package/dist/cypher-ByMv4Xf1.js +1 -0
  47. package/dist/d-PifQWv0n.js +1 -0
  48. package/dist/dark-plus-KEYLhlmT.js +1 -0
  49. package/dist/dart-DZLoTQm4.js +1 -0
  50. package/dist/dax-DsfXcHUZ.js +29 -0
  51. package/dist/desktop-D71BffLY.js +1 -0
  52. package/dist/diff-DvyTQcux.js +1 -0
  53. package/dist/docker-DNR26wTC.js +1 -0
  54. package/dist/dracula-DGO8GyiP.js +1 -0
  55. package/dist/dracula-soft-9B1nZgL-.js +1 -0
  56. package/dist/dream-maker-Eh5U-gDp.js +52 -0
  57. package/dist/elixir-Exce1dLy.js +17 -0
  58. package/dist/elm-D7CfdsEG.js +1 -0
  59. package/dist/emacs-lisp-51pKhIDe.js +5754 -0
  60. package/dist/erb-S7d1X-Y-.js +1 -0
  61. package/dist/erlang-DS9ZWoKD.js +1 -0
  62. package/dist/fennel-DuK7IM-L.js +1 -0
  63. package/dist/fish-DfeQjIbs.js +5 -0
  64. package/dist/fluent-KPqz0Sb3.js +1 -0
  65. package/dist/fortran-fixed-form-6v7-xzYY.js +1 -0
  66. package/dist/fortran-free-form-D6pmzCqS.js +1 -0
  67. package/dist/fsharp-JZjmD0Li.js +1 -0
  68. package/dist/gdresource-CFKM8Ske.js +1 -0
  69. package/dist/gdscript-CoEqzGFw.js +44 -0
  70. package/dist/gdshader-B_SUYfiV.js +1 -0
  71. package/dist/genie-DAfrLhwG.js +1 -0
  72. package/dist/gherkin-B0PjAhci.js +1 -0
  73. package/dist/git-commit-XY8bXq83.js +1 -0
  74. package/dist/git-rebase-BE3WlPTi.js +1 -0
  75. package/dist/github-dark-CzPA46E-.js +1 -0
  76. package/dist/github-dark-default-BXF7Vm5l.js +1 -0
  77. package/dist/github-dark-dimmed-CRDKj6ck.js +1 -0
  78. package/dist/github-light-CRlnGVMD.js +1 -0
  79. package/dist/github-light-default-UREJT2Bw.js +1 -0
  80. package/dist/gleam-Dd6f7Z5P.js +1 -0
  81. package/dist/glimmer-js-I0TZ3_O1.js +13 -0
  82. package/dist/glimmer-ts-CY38hlIb.js +13 -0
  83. package/dist/glsl-tOUOXML3.js +1 -0
  84. package/dist/gnuplot-nclm9rTJ.js +266 -0
  85. package/dist/go-BJn7Ek5W.js +1 -0
  86. package/dist/graphql-DwwLrXH1.js +4 -0
  87. package/dist/groovy-wChcbJ1V.js +37 -0
  88. package/dist/hack-DmjQSZc3.js +86 -0
  89. package/dist/haml-map1ik7u.js +1 -0
  90. package/dist/handlebars-CCc9qS91.js +1 -0
  91. package/dist/haskell-DOVD4hs_.js +559 -0
  92. package/dist/haxe-Dit6kIrv.js +11 -0
  93. package/dist/hcl-CpAANOdC.js +1 -0
  94. package/dist/hjson-DZqG9GXz.js +50 -0
  95. package/dist/hlsl-DmDrTTlz.js +1 -0
  96. package/dist/houston-CZZ6oYdA.js +1 -0
  97. package/dist/html-NmvpQUfQ.js +74 -0
  98. package/dist/html-derivative-QphQoco-.js +1 -0
  99. package/dist/http-B58UUte0.js +1 -0
  100. package/dist/hxml-4EC8aR1F.js +1 -0
  101. package/dist/hy-y-6HuL9l.js +3 -0
  102. package/dist/imba-CyaA9484.js +223 -0
  103. package/dist/index-UHZxbkBe.js +2 -0
  104. package/dist/ini-DeVv6D4_.js +1 -0
  105. package/dist/java-ClXEvkw9.js +68 -0
  106. package/dist/javascript-Dch3xQiY.js +699 -0
  107. package/dist/jinja-BrXMjE5a.js +1 -0
  108. package/dist/jison-DlEKeWyG.js +1 -0
  109. package/dist/json-CupVZNk8.js +25 -0
  110. package/dist/json5-Bh8mriwU.js +17 -0
  111. package/dist/jsonc-DYI1rfmx.js +25 -0
  112. package/dist/jsonl-BUpeXbsf.js +25 -0
  113. package/dist/jsonnet-C9d3aiqh.js +1 -0
  114. package/dist/jssm-Dble9ECP.js +1 -0
  115. package/dist/jsx-CsyrCbsw.js +699 -0
  116. package/dist/julia-jDzGJc6I.js +9 -0
  117. package/dist/kotlin-BIxS-Weu.js +1 -0
  118. package/dist/kusto-DGEpfOTx.js +1 -0
  119. package/dist/latex-bjPeSN-x.js +3 -0
  120. package/dist/less-Du6_OKDb.js +159 -0
  121. package/dist/lib/index.d.ts +1022 -0
  122. package/dist/lib/index.js +1 -0
  123. package/dist/light-plus-BsvsQ1iS.js +1 -0
  124. package/dist/liquid-DHpvaAyy.js +14 -0
  125. package/dist/log-Ksn5IXup.js +1 -0
  126. package/dist/logo-DdacRhvC.js +1 -0
  127. package/dist/lua-Cy9U1SwF.js +1 -0
  128. package/dist/make-B9S9BZZh.js +1 -0
  129. package/dist/markdown-BdfWgkoX.js +129 -0
  130. package/dist/marko-neMFgnTa.js +8 -0
  131. package/dist/material-theme-B2BuIiKK.js +1 -0
  132. package/dist/material-theme-darker-BrGg7AAd.js +1 -0
  133. package/dist/material-theme-lighter-DDRuGeQH.js +1 -0
  134. package/dist/material-theme-ocean-CBL0qBdF.js +1 -0
  135. package/dist/material-theme-palenight-D7gg1Usp.js +1 -0
  136. package/dist/matlab-Btshr8M_.js +70 -0
  137. package/dist/mdc-_-l14nii.js +76 -0
  138. package/dist/mdx-CBPJd_fO.js +1 -0
  139. package/dist/mermaid-Dkb1Nx48.js +1 -0
  140. package/dist/min-dark-iSbrOpM4.js +1 -0
  141. package/dist/min-light-BITGhEdf.js +1 -0
  142. package/dist/mojo--7WWnkdy.js +517 -0
  143. package/dist/monokai-sMI-pExk.js +1 -0
  144. package/dist/move-MN12aA4C.js +1 -0
  145. package/dist/narrat-B9CT-1u6.js +7 -0
  146. package/dist/nextflow-DBxHOdLe.js +1 -0
  147. package/dist/nginx-C3DmzmOp.js +1 -0
  148. package/dist/night-owl-BeocmOPF.js +1 -0
  149. package/dist/nim-BjhyiCLB.js +1 -0
  150. package/dist/nix-B7rNE5kf.js +1 -0
  151. package/dist/nord-CsyjKwr8.js +1 -0
  152. package/dist/nushell-CrgTADc5.js +1 -0
  153. package/dist/objective-c-DHmGyzbM.js +109 -0
  154. package/dist/objective-cpp-BWKJ1FCf.js +239 -0
  155. package/dist/ocaml-RqY_Nz63.js +1 -0
  156. package/dist/one-dark-pro-BTtaZsq5.js +1 -0
  157. package/dist/one-light-alpzPJ78.js +1 -0
  158. package/dist/pascal-B6ZnTe72.js +1 -0
  159. package/dist/perl-PZnu_VA7.js +1 -0
  160. package/dist/php-m9Z3qs_k.js +771 -0
  161. package/dist/plsql-BbJj1K1w.js +1 -0
  162. package/dist/po-HrnDn_2Q.js +1 -0
  163. package/dist/poimandres-Cda-MJFk.js +1 -0
  164. package/dist/postcss-DXT9h7v2.js +1 -0
  165. package/dist/powerquery-CApMHEaB.js +1 -0
  166. package/dist/powershell-9ZOzOPqN.js +1 -0
  167. package/dist/prisma-BBJYjQ0k.js +1 -0
  168. package/dist/prolog-BH_RS3WO.js +1 -0
  169. package/dist/proto-DOtRmeXT.js +1 -0
  170. package/dist/pug-jyQP1XtO.js +1 -0
  171. package/dist/puppet-37ic6j3l.js +1 -0
  172. package/dist/purescript-Bm5O5oLm.js +7 -0
  173. package/dist/python-DwuVtWc2.js +518 -0
  174. package/dist/qml-DM3j-f55.js +1 -0
  175. package/dist/qmldir-MS3qTAOR.js +1 -0
  176. package/dist/qss-FJDVp-XM.js +1 -0
  177. package/dist/r-BXfENWL6.js +1 -0
  178. package/dist/racket-BbLA0SU8.js +353 -0
  179. package/dist/raku-D384ylkT.js +1 -0
  180. package/dist/razor-DokJXJPk.js +40 -0
  181. package/dist/red-jaXbsbtS.js +1 -0
  182. package/dist/reg-CrhH3_Og.js +1 -0
  183. package/dist/regexp-C_ZPRiAj.js +26 -0
  184. package/dist/rel-BuawaRXJ.js +1 -0
  185. package/dist/riscv-D-aEEwJo.js +13 -0
  186. package/dist/rose-pine-BIAFg_EN.js +1 -0
  187. package/dist/rose-pine-dawn-C5m_N-6l.js +1 -0
  188. package/dist/rose-pine-moon-B9S0JTD1.js +1 -0
  189. package/dist/rst-DlAMacAQ.js +1 -0
  190. package/dist/ruby-eQ1iIi6H.js +80 -0
  191. package/dist/rust-DGxQkqYo.js +1 -0
  192. package/dist/sas-BhBoFsCt.js +1 -0
  193. package/dist/sass-CMDmr8et.js +2 -0
  194. package/dist/scala-Cd0cRMx9.js +5 -0
  195. package/dist/scheme-BTeww-4z.js +136 -0
  196. package/dist/scss-DoQ2ojfq.js +90 -0
  197. package/dist/shaderlab-Bb-6Dmi7.js +1 -0
  198. package/dist/shellscript-BZfs-ost.js +1 -0
  199. package/dist/shellsession-B6XH_PlG.js +1 -0
  200. package/dist/slack-dark-C7oZ9nno.js +1 -0
  201. package/dist/slack-ochin-hXH8Gyq8.js +1 -0
  202. package/dist/smalltalk-DSsji4Hu.js +1 -0
  203. package/dist/snazzy-light-CA9nliXM.js +1 -0
  204. package/dist/solarized-dark-C86elO-m.js +1 -0
  205. package/dist/solarized-light-xPNGhBYe.js +1 -0
  206. package/dist/solidity-CThH5sBG.js +1 -0
  207. package/dist/soy-rVg8SA9F.js +1 -0
  208. package/dist/sparql-Cmp61EUJ.js +1 -0
  209. package/dist/splunk-6XBPEST2.js +1 -0
  210. package/dist/sql-DxR2xW-a.js +21 -0
  211. package/dist/ssh-config-BH1M7C1g.js +1 -0
  212. package/dist/stata-DGeqZgIM.js +3 -0
  213. package/dist/stylus-DSrLtGYv.js +15 -0
  214. package/dist/svelte-BMtjZn0z.js +1 -0
  215. package/dist/swift-C8WrqfNz.js +544 -0
  216. package/dist/sync-DItkgf9b.js +303 -0
  217. package/dist/synthwave-84-BBDuFDsq.js +1 -0
  218. package/dist/system-verilog-BscxmKrE.js +8 -0
  219. package/dist/systemd-IQPSIA3x.js +1 -0
  220. package/dist/tasl-BxwAa5i0.js +1 -0
  221. package/dist/tcl-C_8Fx7bH.js +1 -0
  222. package/dist/terraform-DBeuZS66.js +1 -0
  223. package/dist/tex-BqVuN0dX.js +1 -0
  224. package/dist/tokyo-night-eJfcURhx.js +1 -0
  225. package/dist/toml-BT9ZzGyQ.js +69 -0
  226. package/dist/tsv-DnLUQrgA.js +1 -0
  227. package/dist/tsx-BlxWTfDV.js +699 -0
  228. package/dist/turtle-C15OxdQ5.js +1 -0
  229. package/dist/twig-DDlPLETn.js +40 -0
  230. package/dist/typescript-DC8MraHL.js +666 -0
  231. package/dist/typespec-Bx89rGXK.js +1 -0
  232. package/dist/typst-I4qd5QHW.js +10 -0
  233. package/dist/v-C2TBxDwV.js +1 -0
  234. package/dist/vala-CO5hpdkB.js +1 -0
  235. package/dist/vb-beD-FUib.js +1 -0
  236. package/dist/verilog-DVfdqzEq.js +1 -0
  237. package/dist/vesper-BSB_bK09.js +1 -0
  238. package/dist/vhdl-QZ3jNtnE.js +515 -0
  239. package/dist/viml-BLluXI4E.js +1 -0
  240. package/dist/vitesse-black-B3g-KkBK.js +1 -0
  241. package/dist/vitesse-dark-Bxkoe-BC.js +1 -0
  242. package/dist/vitesse-light-Br6ll-O0.js +1 -0
  243. package/dist/vue-B6Rs-4k4.js +6 -0
  244. package/dist/vue-html-Blw9Jzz9.js +1 -0
  245. package/dist/vyper-o-cPXEvd.js +575 -0
  246. package/dist/wasm-2oxoyaYy.js +1 -0
  247. package/dist/wasm-Cicx_DS6.js +1 -0
  248. package/dist/wenyan-Cavfe_d0.js +1 -0
  249. package/dist/wgsl-BZz1Hhek.js +1 -0
  250. package/dist/wikitext-zfUCmn4z.js +40 -0
  251. package/dist/wolfram-BICIrM8O.js +1 -0
  252. package/dist/xml-sp2Egr0Z.js +1 -0
  253. package/dist/xsl-BQYvujlj.js +1 -0
  254. package/dist/yaml-C5gCGmDW.js +200 -0
  255. package/dist/zenscript-B1nm99XP.js +2 -0
  256. package/dist/zig-xtV5iK4E.js +1 -0
  257. package/license.txt +21 -0
  258. package/package.json +109 -0
  259. package/readme.md +535 -0
@@ -0,0 +1,25 @@
1
+ import e from"./html-NmvpQUfQ.js";import t from"./sql-DxR2xW-a.js";import n from"./css-CbYhyuC0.js";import a from"./c-RCJZWN-0.js";import r from"./javascript-Dch3xQiY.js";import i from"./shellscript-BZfs-ost.js";const s=Object.freeze({displayName:"Crystal",fileTypes:["cr"],firstLineMatch:"^#!/.*\\bcrystal",foldingStartMarker:`(?x)^(\\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:"(?x)((^|;)\\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:"(?x)^\\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:`(?x)
2
+ (?=def\\b)
3
+ (?<=^|\\s)(def)\\s+
4
+ (
5
+ (?>[a-zA-Z_]\\w*(?>\\.|::))?
6
+ (?>
7
+ [a-zA-Z_]\\w*(?>[?!]|=(?!>))?
8
+ |
9
+ \\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&\`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=?
10
+ )
11
+ )
12
+ \\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:`(?x)
13
+ (?=def\\b)
14
+ (?<=^|\\s)(def)\\b
15
+ (
16
+ \\s+
17
+ (
18
+ (?>[a-zA-Z_]\\w*(?>\\.|::))?
19
+ (?>
20
+ [a-zA-Z_]\\w*(?>[?!]|=(?!>))?
21
+ |
22
+ \\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&\`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=?
23
+ )
24
+ )
25
+ )?`,name:"meta.function.method.without-arguments.crystal"},{comment:"Floating point literal (fraction)",match:"\\b[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\b",name:"constant.numeric.float.crystal"},{comment:"Floating point literal (exponent)",match:"\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\b",name:"constant.numeric.float.crystal"},{comment:"Floating point literal (typed)",match:"\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\b",name:"constant.numeric.float.crystal"},{comment:"Integer literal (decimal)",match:"\\b(?!0[0-9])[0-9][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:"(?x) (?: ^| (?<=[=>~(?:\\[,|&;] | [\\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"]});var c=[...e,...t,...n,...a,...r,...i,s];export{c as default};