app-ai-solution-exp 0.1.2

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 (173) hide show
  1. package/bin/app-ai-solution-exp.js +20 -0
  2. package/out/main/index.js +1631 -0
  3. package/out/preload/index.js +108 -0
  4. package/out/renderer/assets/abap-D5KwWAsZ.js +1399 -0
  5. package/out/renderer/assets/apex-DVGUZ64i.js +331 -0
  6. package/out/renderer/assets/azcli-BEAhqcuE.js +69 -0
  7. package/out/renderer/assets/bat-Bqkp9Cfu.js +101 -0
  8. package/out/renderer/assets/bicep-DIlfshcM.js +110 -0
  9. package/out/renderer/assets/cameligo-CLaaYNMV.js +175 -0
  10. package/out/renderer/assets/clojure-fcgFaMHx.js +762 -0
  11. package/out/renderer/assets/codicon-ngg6Pgfi.ttf +0 -0
  12. package/out/renderer/assets/coffee-CzJ5oEdj.js +233 -0
  13. package/out/renderer/assets/cpp-CcN6f0ik.js +390 -0
  14. package/out/renderer/assets/csharp-BJeIuvde.js +327 -0
  15. package/out/renderer/assets/csp-D_3BK2Wp.js +54 -0
  16. package/out/renderer/assets/css-i3rI3_64.js +186 -0
  17. package/out/renderer/assets/css.worker-umuuUiIb.js +53567 -0
  18. package/out/renderer/assets/cssMode-BlKZF8mS.js +208 -0
  19. package/out/renderer/assets/cypher-D0--_GAN.js +264 -0
  20. package/out/renderer/assets/dart-vLMHv35g.js +282 -0
  21. package/out/renderer/assets/dockerfile--oxj0cAH.js +131 -0
  22. package/out/renderer/assets/ecl-CeuUgzaZ.js +457 -0
  23. package/out/renderer/assets/editor.worker-CNgWLVu7.js +13695 -0
  24. package/out/renderer/assets/elixir-eLfY1jWH.js +570 -0
  25. package/out/renderer/assets/flow9-ZSTChSMd.js +143 -0
  26. package/out/renderer/assets/freemarker2-BTb0QKKy.js +995 -0
  27. package/out/renderer/assets/fsharp-D2uoxuLH.js +218 -0
  28. package/out/renderer/assets/go-brnMpFrj.js +219 -0
  29. package/out/renderer/assets/graphql-BeiGgjIU.js +152 -0
  30. package/out/renderer/assets/handlebars-DKVnkZoO.js +414 -0
  31. package/out/renderer/assets/hcl-CrX1Es2W.js +184 -0
  32. package/out/renderer/assets/html-DSHBWNSF.js +303 -0
  33. package/out/renderer/assets/html.worker-BT47iy49.js +29777 -0
  34. package/out/renderer/assets/htmlMode-hdSFcfq-.js +224 -0
  35. package/out/renderer/assets/index-ByP1RhpK.js +309272 -0
  36. package/out/renderer/assets/index-CgixHIqL.css +11502 -0
  37. package/out/renderer/assets/ini-BcQysCTb.js +72 -0
  38. package/out/renderer/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  39. package/out/renderer/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  40. package/out/renderer/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  41. package/out/renderer/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  42. package/out/renderer/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  43. package/out/renderer/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  44. package/out/renderer/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
  45. package/out/renderer/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
  46. package/out/renderer/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  47. package/out/renderer/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  48. package/out/renderer/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  49. package/out/renderer/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  50. package/out/renderer/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  51. package/out/renderer/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  52. package/out/renderer/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
  53. package/out/renderer/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
  54. package/out/renderer/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  55. package/out/renderer/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  56. package/out/renderer/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  57. package/out/renderer/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  58. package/out/renderer/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  59. package/out/renderer/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  60. package/out/renderer/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
  61. package/out/renderer/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
  62. package/out/renderer/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  63. package/out/renderer/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  64. package/out/renderer/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  65. package/out/renderer/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  66. package/out/renderer/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  67. package/out/renderer/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  68. package/out/renderer/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
  69. package/out/renderer/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
  70. package/out/renderer/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  71. package/out/renderer/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  72. package/out/renderer/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  73. package/out/renderer/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  74. package/out/renderer/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  75. package/out/renderer/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  76. package/out/renderer/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
  77. package/out/renderer/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  78. package/out/renderer/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  79. package/out/renderer/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  80. package/out/renderer/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  81. package/out/renderer/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  82. package/out/renderer/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  83. package/out/renderer/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  84. package/out/renderer/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
  85. package/out/renderer/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
  86. package/out/renderer/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  87. package/out/renderer/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  88. package/out/renderer/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  89. package/out/renderer/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  90. package/out/renderer/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  91. package/out/renderer/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  92. package/out/renderer/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
  93. package/out/renderer/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
  94. package/out/renderer/assets/java-Dt3iMn2o.js +233 -0
  95. package/out/renderer/assets/javascript-Ae6t5gfn.js +72 -0
  96. package/out/renderer/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  97. package/out/renderer/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  98. package/out/renderer/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  99. package/out/renderer/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  100. package/out/renderer/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  101. package/out/renderer/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  102. package/out/renderer/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  103. package/out/renderer/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  104. package/out/renderer/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  105. package/out/renderer/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  106. package/out/renderer/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  107. package/out/renderer/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  108. package/out/renderer/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  109. package/out/renderer/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  110. package/out/renderer/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  111. package/out/renderer/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  112. package/out/renderer/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  113. package/out/renderer/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  114. package/out/renderer/assets/json.worker-D4JVmXIe.js +21424 -0
  115. package/out/renderer/assets/jsonMode-B3dQSNhP.js +931 -0
  116. package/out/renderer/assets/julia-Cm3ItYL_.js +512 -0
  117. package/out/renderer/assets/kotlin-Ddo1SjA5.js +253 -0
  118. package/out/renderer/assets/less-B7Qaxw-O.js +162 -0
  119. package/out/renderer/assets/lexon-C1U0m2n9.js +158 -0
  120. package/out/renderer/assets/liquid-Zgyb8DZ5.js +235 -0
  121. package/out/renderer/assets/lspLanguageFeatures-CkDn9c2y.js +1841 -0
  122. package/out/renderer/assets/lua-hNsuGJkO.js +163 -0
  123. package/out/renderer/assets/m3-6ko6q9-_.js +211 -0
  124. package/out/renderer/assets/markdown-B0YTnTxW.js +230 -0
  125. package/out/renderer/assets/mdx-C8e8DFOf.js +159 -0
  126. package/out/renderer/assets/mips-CJm71dS3.js +199 -0
  127. package/out/renderer/assets/msdax-BBeIktCY.js +376 -0
  128. package/out/renderer/assets/mysql-BWiizXSn.js +879 -0
  129. package/out/renderer/assets/objective-c-B1L1C5EC.js +184 -0
  130. package/out/renderer/assets/pascal-DMQyD4Xk.js +252 -0
  131. package/out/renderer/assets/pascaligo-VA_LQ1oU.js +165 -0
  132. package/out/renderer/assets/perl-DC0Z0tlO.js +627 -0
  133. package/out/renderer/assets/pgsql-DaSGFTLp.js +852 -0
  134. package/out/renderer/assets/php-Bkx1qpkQ.js +501 -0
  135. package/out/renderer/assets/pla-DEV89yYj.js +138 -0
  136. package/out/renderer/assets/postiats-CVVurEnu.js +908 -0
  137. package/out/renderer/assets/powerquery-BQ_t1ZiQ.js +891 -0
  138. package/out/renderer/assets/powershell-BXiKvz7Z.js +240 -0
  139. package/out/renderer/assets/protobuf-CndvAUGu.js +421 -0
  140. package/out/renderer/assets/pug-BxCXwerb.js +403 -0
  141. package/out/renderer/assets/python-8eSQckTG.js +295 -0
  142. package/out/renderer/assets/qsharp-BWK6YLKm.js +302 -0
  143. package/out/renderer/assets/r-CtqYUQ6l.js +244 -0
  144. package/out/renderer/assets/razor-eAkN4Qfv.js +545 -0
  145. package/out/renderer/assets/redis-O7gSt3oh.js +303 -0
  146. package/out/renderer/assets/redshift-CvYMMYZY.js +810 -0
  147. package/out/renderer/assets/restructuredtext-B-KQCVu_.js +175 -0
  148. package/out/renderer/assets/ruby-DCd4DmAr.js +512 -0
  149. package/out/renderer/assets/rust-B1c0VCeq.js +344 -0
  150. package/out/renderer/assets/sb-Chfc_wZF.js +116 -0
  151. package/out/renderer/assets/scala-DbVzH-3O.js +371 -0
  152. package/out/renderer/assets/scheme-D7PxodDG.js +109 -0
  153. package/out/renderer/assets/scss-B42qMyAu.js +261 -0
  154. package/out/renderer/assets/shell-vZEubQ82.js +222 -0
  155. package/out/renderer/assets/solidity-yHOxYChb.js +1368 -0
  156. package/out/renderer/assets/sophia-D7pU0Y1d.js +200 -0
  157. package/out/renderer/assets/sparql-DxuVdnRl.js +202 -0
  158. package/out/renderer/assets/sql-BAGepFCR.js +854 -0
  159. package/out/renderer/assets/st-C-b0Dh53.js +417 -0
  160. package/out/renderer/assets/swift-BmOZGynf.js +313 -0
  161. package/out/renderer/assets/systemverilog-BOC0OOdC.js +577 -0
  162. package/out/renderer/assets/tcl-Bb4GCwBr.js +233 -0
  163. package/out/renderer/assets/ts.worker-C7hW3aY-.js +225330 -0
  164. package/out/renderer/assets/tsMode-D7ET908H.js +1265 -0
  165. package/out/renderer/assets/twig-DvgEGWAV.js +393 -0
  166. package/out/renderer/assets/typescript-BhqUlrW4.js +337 -0
  167. package/out/renderer/assets/typespec-R77Ln7Jb.js +128 -0
  168. package/out/renderer/assets/vb-Bm6ESA0Q.js +373 -0
  169. package/out/renderer/assets/wgsl-_KPae5vw.js +454 -0
  170. package/out/renderer/assets/xml-Bg3Ctug6.js +89 -0
  171. package/out/renderer/assets/yaml-C9aCL4uU.js +200 -0
  172. package/out/renderer/index.html +13 -0
  173. package/package.json +110 -0
@@ -0,0 +1,175 @@
1
+ const conf = {
2
+ brackets: [
3
+ ["{", "}"],
4
+ ["[", "]"],
5
+ ["(", ")"]
6
+ ],
7
+ autoClosingPairs: [
8
+ { open: "{", close: "}" },
9
+ { open: "[", close: "]" },
10
+ { open: "(", close: ")" },
11
+ { open: "<", close: ">", notIn: ["string"] }
12
+ ],
13
+ surroundingPairs: [
14
+ { open: "(", close: ")" },
15
+ { open: "[", close: "]" },
16
+ { open: "`", close: "`" }
17
+ ],
18
+ folding: {
19
+ markers: {
20
+ start: new RegExp("^\\s*<!--\\s*#?region\\b.*-->"),
21
+ end: new RegExp("^\\s*<!--\\s*#?endregion\\b.*-->")
22
+ }
23
+ }
24
+ };
25
+ const language = {
26
+ defaultToken: "",
27
+ tokenPostfix: ".rst",
28
+ control: /[\\`*_\[\]{}()#+\-\.!]/,
29
+ escapes: /\\(?:@control)/,
30
+ empty: [
31
+ "area",
32
+ "base",
33
+ "basefont",
34
+ "br",
35
+ "col",
36
+ "frame",
37
+ "hr",
38
+ "img",
39
+ "input",
40
+ "isindex",
41
+ "link",
42
+ "meta",
43
+ "param"
44
+ ],
45
+ alphanumerics: /[A-Za-z0-9]/,
46
+ simpleRefNameWithoutBq: /(?:@alphanumerics[-_+:.]*@alphanumerics)+|(?:@alphanumerics+)/,
47
+ simpleRefName: /(?:`@phrase`|@simpleRefNameWithoutBq)/,
48
+ phrase: /@simpleRefNameWithoutBq(?:\s@simpleRefNameWithoutBq)*/,
49
+ citationName: /[A-Za-z][A-Za-z0-9-_.]*/,
50
+ blockLiteralStart: /(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,
51
+ precedingChars: /(?:[ -:/'"<([{])/,
52
+ followingChars: /(?:[ -.,:;!?/'")\]}>]|$)/,
53
+ punctuation: /(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,
54
+ tokenizer: {
55
+ root: [
56
+ //sections
57
+ [/^(@punctuation{3,}$){1,1}?/, "keyword"],
58
+ //line-blocks
59
+ //No rules on it
60
+ //bullet-lists
61
+ [/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/, "keyword"],
62
+ //literal-blocks
63
+ [/([ ]::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
64
+ [/(::)\s*$/, "keyword", "@blankLineOfLiteralBlocks"],
65
+ { include: "@tables" },
66
+ { include: "@explicitMarkupBlocks" },
67
+ { include: "@inlineMarkup" }
68
+ ],
69
+ explicitMarkupBlocks: [
70
+ //citations
71
+ { include: "@citations" },
72
+ //footnotes
73
+ { include: "@footnotes" },
74
+ //directives
75
+ [
76
+ /^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,
77
+ [{ token: "", next: "subsequentLines" }, "keyword", "", ""]
78
+ ],
79
+ //hyperlink-targets
80
+ [
81
+ /^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,
82
+ [{ token: "", next: "hyperlinks" }, "", "", "string.link", "", "", "string.link"]
83
+ ],
84
+ //anonymous-hyperlinks
85
+ [
86
+ /^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,
87
+ [{ token: "", next: "subsequentLines" }, "", "", "", "string.link"]
88
+ ],
89
+ [/^(__\s+)(.+)/, ["", "string.link"]],
90
+ //substitution-definitions
91
+ [
92
+ /^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,
93
+ [{ token: "", next: "subsequentLines" }, "", "string.link", "", "keyword", ""],
94
+ "@rawBlocks"
95
+ ],
96
+ [/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/, ["", "string.link", ""]],
97
+ //comments
98
+ [/^(\.\.)([ ].*)$/, [{ token: "", next: "@comments" }, "comment"]]
99
+ ],
100
+ inlineMarkup: [
101
+ { include: "@citationsReference" },
102
+ { include: "@footnotesReference" },
103
+ //hyperlink-references
104
+ [/(@simpleRefName)(_{1,2})/, ["string.link", ""]],
105
+ //embedded-uris-and-aliases
106
+ [/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/, ["", "string.link", "", "string.link", "", "", ""]],
107
+ //emphasis
108
+ [/\*\*([^\\*]|\*(?!\*))+\*\*/, "strong"],
109
+ [/\*[^*]+\*/, "emphasis"],
110
+ //inline-literals
111
+ [/(``)((?:[^`]|\`(?!`))+)(``)/, ["", "keyword", ""]],
112
+ [/(__\s+)(.+)/, ["", "keyword"]],
113
+ //interpreted-text
114
+ [/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/, ["", "keyword", "", "", ""]],
115
+ [/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/, ["", "", "", "keyword", ""]],
116
+ [/(`)([^`]+)(`)/, ""],
117
+ //inline-internal-targets
118
+ [/(_`)(@phrase)(`)/, ["", "string.link", ""]]
119
+ ],
120
+ citations: [
121
+ [
122
+ /^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,
123
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
124
+ ]
125
+ ],
126
+ citationsReference: [[/(\[)(@citationName)(\]_)/, ["", "string.link", ""]]],
127
+ footnotes: [
128
+ [
129
+ /^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,
130
+ [{ token: "", next: "@subsequentLines" }, "string.link", ""]
131
+ ],
132
+ [
133
+ /^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,
134
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
135
+ ],
136
+ [
137
+ /^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,
138
+ [{ token: "", next: "@subsequentLines" }, "string.link", "", ""]
139
+ ]
140
+ ],
141
+ footnotesReference: [
142
+ [/(\[)([0-9]+)(\])(_)/, ["", "string.link", "", ""]],
143
+ [/(\[)(#@simpleRefName?)(\])(_)/, ["", "string.link", "", ""]],
144
+ [/(\[)(\*)(\])(_)/, ["", "string.link", "", ""]]
145
+ ],
146
+ blankLineOfLiteralBlocks: [
147
+ [/^$/, "", "@subsequentLinesOfLiteralBlocks"],
148
+ [/^.*$/, "", "@pop"]
149
+ ],
150
+ subsequentLinesOfLiteralBlocks: [
151
+ [/(@blockLiteralStart+)(.*)/, ["keyword", ""]],
152
+ [/^(?!blockLiteralStart)/, "", "@popall"]
153
+ ],
154
+ subsequentLines: [
155
+ [/^[\s]+.*/, ""],
156
+ [/^(?!\s)/, "", "@pop"]
157
+ ],
158
+ hyperlinks: [
159
+ [/^[\s]+.*/, "string.link"],
160
+ [/^(?!\s)/, "", "@pop"]
161
+ ],
162
+ comments: [
163
+ [/^[\s]+.*/, "comment"],
164
+ [/^(?!\s)/, "", "@pop"]
165
+ ],
166
+ tables: [
167
+ [/\+-[+-]+/, "keyword"],
168
+ [/\+=[+=]+/, "keyword"]
169
+ ]
170
+ }
171
+ };
172
+ export {
173
+ conf,
174
+ language
175
+ };
@@ -0,0 +1,512 @@
1
+ const conf = {
2
+ comments: {
3
+ lineComment: "#",
4
+ blockComment: ["=begin", "=end"]
5
+ },
6
+ brackets: [
7
+ ["(", ")"],
8
+ ["{", "}"],
9
+ ["[", "]"]
10
+ ],
11
+ autoClosingPairs: [
12
+ { open: "{", close: "}" },
13
+ { open: "[", close: "]" },
14
+ { open: "(", close: ")" },
15
+ { open: '"', close: '"' },
16
+ { open: "'", close: "'" }
17
+ ],
18
+ surroundingPairs: [
19
+ { open: "{", close: "}" },
20
+ { open: "[", close: "]" },
21
+ { open: "(", close: ")" },
22
+ { open: '"', close: '"' },
23
+ { open: "'", close: "'" }
24
+ ],
25
+ indentationRules: {
26
+ increaseIndentPattern: new RegExp(
27
+ `^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|("|'|/).*\\4)*(#.*)?$`
28
+ ),
29
+ decreaseIndentPattern: new RegExp(
30
+ "^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)"
31
+ )
32
+ }
33
+ };
34
+ const language = {
35
+ tokenPostfix: ".ruby",
36
+ keywords: [
37
+ "__LINE__",
38
+ "__ENCODING__",
39
+ "__FILE__",
40
+ "BEGIN",
41
+ "END",
42
+ "alias",
43
+ "and",
44
+ "begin",
45
+ "break",
46
+ "case",
47
+ "class",
48
+ "def",
49
+ "defined?",
50
+ "do",
51
+ "else",
52
+ "elsif",
53
+ "end",
54
+ "ensure",
55
+ "for",
56
+ "false",
57
+ "if",
58
+ "in",
59
+ "module",
60
+ "next",
61
+ "nil",
62
+ "not",
63
+ "or",
64
+ "redo",
65
+ "rescue",
66
+ "retry",
67
+ "return",
68
+ "self",
69
+ "super",
70
+ "then",
71
+ "true",
72
+ "undef",
73
+ "unless",
74
+ "until",
75
+ "when",
76
+ "while",
77
+ "yield"
78
+ ],
79
+ keywordops: ["::", "..", "...", "?", ":", "=>"],
80
+ builtins: [
81
+ "require",
82
+ "public",
83
+ "private",
84
+ "include",
85
+ "extend",
86
+ "attr_reader",
87
+ "protected",
88
+ "private_class_method",
89
+ "protected_class_method",
90
+ "new"
91
+ ],
92
+ // these are closed by 'end' (if, while and until are handled separately)
93
+ declarations: [
94
+ "module",
95
+ "class",
96
+ "def",
97
+ "case",
98
+ "do",
99
+ "begin",
100
+ "for",
101
+ "if",
102
+ "while",
103
+ "until",
104
+ "unless"
105
+ ],
106
+ linedecls: ["def", "case", "do", "begin", "for", "if", "while", "until", "unless"],
107
+ operators: [
108
+ "^",
109
+ "&",
110
+ "|",
111
+ "<=>",
112
+ "==",
113
+ "===",
114
+ "!~",
115
+ "=~",
116
+ ">",
117
+ ">=",
118
+ "<",
119
+ "<=",
120
+ "<<",
121
+ ">>",
122
+ "+",
123
+ "-",
124
+ "*",
125
+ "/",
126
+ "%",
127
+ "**",
128
+ "~",
129
+ "+@",
130
+ "-@",
131
+ "[]",
132
+ "[]=",
133
+ "`",
134
+ "+=",
135
+ "-=",
136
+ "*=",
137
+ "**=",
138
+ "/=",
139
+ "^=",
140
+ "%=",
141
+ "<<=",
142
+ ">>=",
143
+ "&=",
144
+ "&&=",
145
+ "||=",
146
+ "|="
147
+ ],
148
+ brackets: [
149
+ { open: "(", close: ")", token: "delimiter.parenthesis" },
150
+ { open: "{", close: "}", token: "delimiter.curly" },
151
+ { open: "[", close: "]", token: "delimiter.square" }
152
+ ],
153
+ // we include these common regular expressions
154
+ symbols: /[=><!~?:&|+\-*\/\^%\.]+/,
155
+ // escape sequences
156
+ escape: /(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,
157
+ escapes: /\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,
158
+ decpart: /\d(_?\d)*/,
159
+ decimal: /0|@decpart/,
160
+ delim: /[^a-zA-Z0-9\s\n\r]/,
161
+ heredelim: /(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,
162
+ regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
163
+ regexpesc: /\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,
164
+ // The main tokenizer for our languages
165
+ tokenizer: {
166
+ // Main entry.
167
+ // root.<decl> where decl is the current opening declaration (like 'class')
168
+ root: [
169
+ // identifiers and keywords
170
+ // most complexity here is due to matching 'end' correctly with declarations.
171
+ // We distinguish a declaration that comes first on a line, versus declarations further on a line (which are most likey modifiers)
172
+ [
173
+ /^(\s*)([a-z_]\w*[!?=]?)/,
174
+ [
175
+ "white",
176
+ {
177
+ cases: {
178
+ "for|until|while": {
179
+ token: "keyword.$2",
180
+ next: "@dodecl.$2"
181
+ },
182
+ "@declarations": {
183
+ token: "keyword.$2",
184
+ next: "@root.$2"
185
+ },
186
+ end: { token: "keyword.$S2", next: "@pop" },
187
+ "@keywords": "keyword",
188
+ "@builtins": "predefined",
189
+ "@default": "identifier"
190
+ }
191
+ }
192
+ ]
193
+ ],
194
+ [
195
+ /[a-z_]\w*[!?=]?/,
196
+ {
197
+ cases: {
198
+ "if|unless|while|until": {
199
+ token: "keyword.$0x",
200
+ next: "@modifier.$0x"
201
+ },
202
+ for: { token: "keyword.$2", next: "@dodecl.$2" },
203
+ "@linedecls": { token: "keyword.$0", next: "@root.$0" },
204
+ end: { token: "keyword.$S2", next: "@pop" },
205
+ "@keywords": "keyword",
206
+ "@builtins": "predefined",
207
+ "@default": "identifier"
208
+ }
209
+ }
210
+ ],
211
+ [/[A-Z][\w]*[!?=]?/, "constructor.identifier"],
212
+ // constant
213
+ [/\$[\w]*/, "global.constant"],
214
+ // global
215
+ [/@[\w]*/, "namespace.instance.identifier"],
216
+ // instance
217
+ [/@@@[\w]*/, "namespace.class.identifier"],
218
+ // class
219
+ // here document
220
+ [/<<[-~](@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
221
+ [/[ \t\r\n]+<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
222
+ [/^<<(@heredelim).*/, { token: "string.heredoc.delimiter", next: "@heredoc.$1" }],
223
+ // whitespace
224
+ { include: "@whitespace" },
225
+ // strings
226
+ [/"/, { token: "string.d.delim", next: '@dstring.d."' }],
227
+ [/'/, { token: "string.sq.delim", next: "@sstring.sq" }],
228
+ // % literals. For efficiency, rematch in the 'pstring' state
229
+ [/%([rsqxwW]|Q?)/, { token: "@rematch", next: "pstring" }],
230
+ // commands and symbols
231
+ [/`/, { token: "string.x.delim", next: "@dstring.x.`" }],
232
+ [/:(\w|[$@])\w*[!?=]?/, "string.s"],
233
+ [/:"/, { token: "string.s.delim", next: '@dstring.s."' }],
234
+ [/:'/, { token: "string.s.delim", next: "@sstring.s" }],
235
+ // regular expressions. Lookahead for a (not escaped) closing forwardslash on the same line
236
+ [/\/(?=(\\\/|[^\/\n])+\/)/, { token: "regexp.delim", next: "@regexp" }],
237
+ // delimiters and operators
238
+ [/[{}()\[\]]/, "@brackets"],
239
+ [
240
+ /@symbols/,
241
+ {
242
+ cases: {
243
+ "@keywordops": "keyword",
244
+ "@operators": "operator",
245
+ "@default": ""
246
+ }
247
+ }
248
+ ],
249
+ [/[;,]/, "delimiter"],
250
+ // numbers
251
+ [/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/, "number.hex"],
252
+ [/0[_oO][0-7](_?[0-7])*/, "number.octal"],
253
+ [/0[bB][01](_?[01])*/, "number.binary"],
254
+ [/0[dD]@decpart/, "number"],
255
+ [
256
+ /@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,
257
+ {
258
+ cases: {
259
+ $1: "number.float",
260
+ "@default": "number"
261
+ }
262
+ }
263
+ ]
264
+ ],
265
+ // used to not treat a 'do' as a block opener if it occurs on the same
266
+ // line as a 'do' statement: 'while|until|for'
267
+ // dodecl.<decl> where decl is the declarations started, like 'while'
268
+ dodecl: [
269
+ [/^/, { token: "", switchTo: "@root.$S2" }],
270
+ // get out of do-skipping mode on a new line
271
+ [
272
+ /[a-z_]\w*[!?=]?/,
273
+ {
274
+ cases: {
275
+ end: { token: "keyword.$S2", next: "@pop" },
276
+ // end on same line
277
+ do: { token: "keyword", switchTo: "@root.$S2" },
278
+ // do on same line: not an open bracket here
279
+ "@linedecls": {
280
+ token: "@rematch",
281
+ switchTo: "@root.$S2"
282
+ },
283
+ // other declaration on same line: rematch
284
+ "@keywords": "keyword",
285
+ "@builtins": "predefined",
286
+ "@default": "identifier"
287
+ }
288
+ }
289
+ ],
290
+ { include: "@root" }
291
+ ],
292
+ // used to prevent potential modifiers ('if|until|while|unless') to match
293
+ // with 'end' keywords.
294
+ // modifier.<decl>x where decl is the declaration starter, like 'if'
295
+ modifier: [
296
+ [/^/, "", "@pop"],
297
+ // it was a modifier: get out of modifier mode on a new line
298
+ [
299
+ /[a-z_]\w*[!?=]?/,
300
+ {
301
+ cases: {
302
+ end: { token: "keyword.$S2", next: "@pop" },
303
+ // end on same line
304
+ "then|else|elsif|do": {
305
+ token: "keyword",
306
+ switchTo: "@root.$S2"
307
+ },
308
+ // real declaration and not a modifier
309
+ "@linedecls": {
310
+ token: "@rematch",
311
+ switchTo: "@root.$S2"
312
+ },
313
+ // other declaration => not a modifier
314
+ "@keywords": "keyword",
315
+ "@builtins": "predefined",
316
+ "@default": "identifier"
317
+ }
318
+ }
319
+ ],
320
+ { include: "@root" }
321
+ ],
322
+ // single quote strings (also used for symbols)
323
+ // sstring.<kind> where kind is 'sq' (single quote) or 's' (symbol)
324
+ sstring: [
325
+ [/[^\\']+/, "string.$S2"],
326
+ [/\\\\|\\'|\\$/, "string.$S2.escape"],
327
+ [/\\./, "string.$S2.invalid"],
328
+ [/'/, { token: "string.$S2.delim", next: "@pop" }]
329
+ ],
330
+ // double quoted "string".
331
+ // dstring.<kind>.<delim> where kind is 'd' (double quoted), 'x' (command), or 's' (symbol)
332
+ // and delim is the ending delimiter (" or `)
333
+ dstring: [
334
+ [/[^\\`"#]+/, "string.$S2"],
335
+ [/#/, "string.$S2.escape", "@interpolated"],
336
+ [/\\$/, "string.$S2.escape"],
337
+ [/@escapes/, "string.$S2.escape"],
338
+ [/\\./, "string.$S2.escape.invalid"],
339
+ [
340
+ /[`"]/,
341
+ {
342
+ cases: {
343
+ "$#==$S3": { token: "string.$S2.delim", next: "@pop" },
344
+ "@default": "string.$S2"
345
+ }
346
+ }
347
+ ]
348
+ ],
349
+ // literal documents
350
+ // heredoc.<close> where close is the closing delimiter
351
+ heredoc: [
352
+ [
353
+ /^(\s*)(@heredelim)$/,
354
+ {
355
+ cases: {
356
+ "$2==$S2": ["string.heredoc", { token: "string.heredoc.delimiter", next: "@pop" }],
357
+ "@default": ["string.heredoc", "string.heredoc"]
358
+ }
359
+ }
360
+ ],
361
+ [/.*/, "string.heredoc"]
362
+ ],
363
+ // interpolated sequence
364
+ interpolated: [
365
+ [/\$\w*/, "global.constant", "@pop"],
366
+ [/@\w*/, "namespace.class.identifier", "@pop"],
367
+ [/@@@\w*/, "namespace.instance.identifier", "@pop"],
368
+ [
369
+ /[{]/,
370
+ {
371
+ token: "string.escape.curly",
372
+ switchTo: "@interpolated_compound"
373
+ }
374
+ ],
375
+ ["", "", "@pop"]
376
+ // just a # is interpreted as a #
377
+ ],
378
+ // any code
379
+ interpolated_compound: [
380
+ [/[}]/, { token: "string.escape.curly", next: "@pop" }],
381
+ { include: "@root" }
382
+ ],
383
+ // %r quoted regexp
384
+ // pregexp.<open>.<close> where open/close are the open/close delimiter
385
+ pregexp: [
386
+ { include: "@whitespace" },
387
+ // turns out that you can quote using regex control characters, aargh!
388
+ // for example; %r|kgjgaj| is ok (even though | is used for alternation)
389
+ // so, we need to match those first
390
+ [
391
+ /[^\(\{\[\\]/,
392
+ {
393
+ cases: {
394
+ "$#==$S3": { token: "regexp.delim", next: "@pop" },
395
+ "$#==$S2": { token: "regexp.delim", next: "@push" },
396
+ // nested delimiters are allowed..
397
+ "~[)}\\]]": "@brackets.regexp.escape.control",
398
+ "~@regexpctl": "regexp.escape.control",
399
+ "@default": "regexp"
400
+ }
401
+ }
402
+ ],
403
+ { include: "@regexcontrol" }
404
+ ],
405
+ // We match regular expression quite precisely
406
+ regexp: [
407
+ { include: "@regexcontrol" },
408
+ [/[^\\\/]/, "regexp"],
409
+ ["/[ixmp]*", { token: "regexp.delim" }, "@pop"]
410
+ ],
411
+ regexcontrol: [
412
+ [
413
+ /(\{)(\d+(?:,\d*)?)(\})/,
414
+ [
415
+ "@brackets.regexp.escape.control",
416
+ "regexp.escape.control",
417
+ "@brackets.regexp.escape.control"
418
+ ]
419
+ ],
420
+ [
421
+ /(\[)(\^?)/,
422
+ ["@brackets.regexp.escape.control", { token: "regexp.escape.control", next: "@regexrange" }]
423
+ ],
424
+ [/(\()(\?[:=!])/, ["@brackets.regexp.escape.control", "regexp.escape.control"]],
425
+ [/\(\?#/, { token: "regexp.escape.control", next: "@regexpcomment" }],
426
+ [/[()]/, "@brackets.regexp.escape.control"],
427
+ [/@regexpctl/, "regexp.escape.control"],
428
+ [/\\$/, "regexp.escape"],
429
+ [/@regexpesc/, "regexp.escape"],
430
+ [/\\\./, "regexp.invalid"],
431
+ [/#/, "regexp.escape", "@interpolated"]
432
+ ],
433
+ regexrange: [
434
+ [/-/, "regexp.escape.control"],
435
+ [/\^/, "regexp.invalid"],
436
+ [/\\$/, "regexp.escape"],
437
+ [/@regexpesc/, "regexp.escape"],
438
+ [/[^\]]/, "regexp"],
439
+ [/\]/, "@brackets.regexp.escape.control", "@pop"]
440
+ ],
441
+ regexpcomment: [
442
+ [/[^)]+/, "comment"],
443
+ [/\)/, { token: "regexp.escape.control", next: "@pop" }]
444
+ ],
445
+ // % quoted strings
446
+ // A bit repetitive since we need to often special case the kind of ending delimiter
447
+ pstring: [
448
+ [/%([qws])\(/, { token: "string.$1.delim", switchTo: "@qstring.$1.(.)" }],
449
+ [/%([qws])\[/, { token: "string.$1.delim", switchTo: "@qstring.$1.[.]" }],
450
+ [/%([qws])\{/, { token: "string.$1.delim", switchTo: "@qstring.$1.{.}" }],
451
+ [/%([qws])</, { token: "string.$1.delim", switchTo: "@qstring.$1.<.>" }],
452
+ [/%([qws])(@delim)/, { token: "string.$1.delim", switchTo: "@qstring.$1.$2.$2" }],
453
+ [/%r\(/, { token: "regexp.delim", switchTo: "@pregexp.(.)" }],
454
+ [/%r\[/, { token: "regexp.delim", switchTo: "@pregexp.[.]" }],
455
+ [/%r\{/, { token: "regexp.delim", switchTo: "@pregexp.{.}" }],
456
+ [/%r</, { token: "regexp.delim", switchTo: "@pregexp.<.>" }],
457
+ [/%r(@delim)/, { token: "regexp.delim", switchTo: "@pregexp.$1.$1" }],
458
+ [/%(x|W|Q?)\(/, { token: "string.$1.delim", switchTo: "@qqstring.$1.(.)" }],
459
+ [/%(x|W|Q?)\[/, { token: "string.$1.delim", switchTo: "@qqstring.$1.[.]" }],
460
+ [/%(x|W|Q?)\{/, { token: "string.$1.delim", switchTo: "@qqstring.$1.{.}" }],
461
+ [/%(x|W|Q?)</, { token: "string.$1.delim", switchTo: "@qqstring.$1.<.>" }],
462
+ [/%(x|W|Q?)(@delim)/, { token: "string.$1.delim", switchTo: "@qqstring.$1.$2.$2" }],
463
+ [/%([rqwsxW]|Q?)./, { token: "invalid", next: "@pop" }],
464
+ // recover
465
+ [/./, { token: "invalid", next: "@pop" }]
466
+ // recover
467
+ ],
468
+ // non-expanded quoted string.
469
+ // qstring.<kind>.<open>.<close>
470
+ // kind = q|w|s (single quote, array, symbol)
471
+ // open = open delimiter
472
+ // close = close delimiter
473
+ qstring: [
474
+ [/\\$/, "string.$S2.escape"],
475
+ [/\\./, "string.$S2.escape"],
476
+ [
477
+ /./,
478
+ {
479
+ cases: {
480
+ "$#==$S4": { token: "string.$S2.delim", next: "@pop" },
481
+ "$#==$S3": { token: "string.$S2.delim", next: "@push" },
482
+ // nested delimiters are allowed..
483
+ "@default": "string.$S2"
484
+ }
485
+ }
486
+ ]
487
+ ],
488
+ // expanded quoted string.
489
+ // qqstring.<kind>.<open>.<close>
490
+ // kind = Q|W|x (double quote, array, command)
491
+ // open = open delimiter
492
+ // close = close delimiter
493
+ qqstring: [[/#/, "string.$S2.escape", "@interpolated"], { include: "@qstring" }],
494
+ // whitespace & comments
495
+ whitespace: [
496
+ [/[ \t\r\n]+/, ""],
497
+ [/^\s*=begin\b/, "comment", "@comment"],
498
+ [/#.*$/, "comment"]
499
+ ],
500
+ comment: [
501
+ [/[^=]+/, "comment"],
502
+ [/^\s*=begin\b/, "comment.invalid"],
503
+ // nested comment
504
+ [/^\s*=end\b.*/, "comment", "@pop"],
505
+ [/[=]/, "comment"]
506
+ ]
507
+ }
508
+ };
509
+ export {
510
+ conf,
511
+ language
512
+ };