ruby.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. {
  2. "aliases": [
  3. "rb",
  4. "gemspec",
  5. "podspec",
  6. "thor",
  7. "irb"
  8. ],
  9. "keywords": {
  10. "keyword": "and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",
  11. "literal": "true false nil"
  12. },
  13. "illegal": "\\\/\\*",
  14. "contains": [
  15. {
  16. "className": "comment",
  17. "begin": "#",
  18. "end": "$",
  19. "contains": [
  20. {
  21. "className": "doctag",
  22. "begin": "@[A-Za-z]+"
  23. },
  24. {
  25. "begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
  26. },
  27. {
  28. "className": "doctag",
  29. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  30. "relevance": 0
  31. }
  32. ]
  33. },
  34. {
  35. "className": "comment",
  36. "begin": "^\\=begin",
  37. "end": "^\\=end",
  38. "contains": [
  39. {
  40. "$ref": "#contains.0.contains.0"
  41. },
  42. {
  43. "$ref": "#contains.0.contains.1"
  44. },
  45. {
  46. "className": "doctag",
  47. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  48. "relevance": 0
  49. }
  50. ],
  51. "relevance": 10
  52. },
  53. {
  54. "className": "comment",
  55. "begin": "^__END__",
  56. "end": "\\n$",
  57. "contains": [
  58. {
  59. "$ref": "#contains.0.contains.1"
  60. },
  61. {
  62. "className": "doctag",
  63. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  64. "relevance": 0
  65. }
  66. ]
  67. },
  68. {
  69. "begin": "^\\s*=>",
  70. "starts": {
  71. "end": "$",
  72. "contains": [
  73. {
  74. "className": "string",
  75. "contains": [
  76. {
  77. "begin": "\\\\[\\s\\S]",
  78. "relevance": 0
  79. },
  80. {
  81. "className": "subst",
  82. "begin": "#\\{",
  83. "end": "}",
  84. "keywords": {
  85. "$ref": "#keywords"
  86. },
  87. "contains": {
  88. "$ref": "#contains.3.starts.contains"
  89. }
  90. }
  91. ],
  92. "variants": [
  93. {
  94. "begin": "'",
  95. "end": "'"
  96. },
  97. {
  98. "begin": "\"",
  99. "end": "\""
  100. },
  101. {
  102. "begin": "`",
  103. "end": "`"
  104. },
  105. {
  106. "begin": "%[qQwWx]?\\(",
  107. "end": "\\)"
  108. },
  109. {
  110. "begin": "%[qQwWx]?\\[",
  111. "end": "\\]"
  112. },
  113. {
  114. "begin": "%[qQwWx]?{",
  115. "end": "}"
  116. },
  117. {
  118. "begin": "%[qQwWx]?<",
  119. "end": ">"
  120. },
  121. {
  122. "begin": "%[qQwWx]?\/",
  123. "end": "\/"
  124. },
  125. {
  126. "begin": "%[qQwWx]?%",
  127. "end": "%"
  128. },
  129. {
  130. "begin": "%[qQwWx]?-",
  131. "end": "-"
  132. },
  133. {
  134. "begin": "%[qQwWx]?\\|",
  135. "end": "\\|"
  136. },
  137. {
  138. "begin": "\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b"
  139. },
  140. {
  141. "begin": "<<[-~]?'?(\\w+)(?:.|\\n)*?\\n\\s*\\1\\b",
  142. "returnBegin": true,
  143. "contains": [
  144. {
  145. "begin": "<<[-~]?'?"
  146. },
  147. {
  148. "begin": "\\w+",
  149. "endSameAsBegin": true,
  150. "contains": [
  151. {
  152. "$ref": "#contains.3.starts.contains.0.contains.0"
  153. },
  154. {
  155. "$ref": "#contains.3.starts.contains.0.contains.1"
  156. }
  157. ]
  158. }
  159. ]
  160. }
  161. ]
  162. },
  163. {
  164. "begin": "#<",
  165. "end": ">"
  166. },
  167. {
  168. "className": "class",
  169. "beginKeywords": "class module",
  170. "end": "$|;",
  171. "illegal": "=",
  172. "contains": [
  173. {
  174. "className": "title",
  175. "begin": "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",
  176. "relevance": 0
  177. },
  178. {
  179. "begin": "<\\s*",
  180. "contains": [
  181. {
  182. "begin": "([a-zA-Z]\\w*::)?[a-zA-Z]\\w*"
  183. }
  184. ]
  185. },
  186. {
  187. "$ref": "#contains.0"
  188. },
  189. {
  190. "$ref": "#contains.1"
  191. },
  192. {
  193. "$ref": "#contains.2"
  194. }
  195. ]
  196. },
  197. {
  198. "className": "function",
  199. "beginKeywords": "def",
  200. "end": "$|;",
  201. "contains": [
  202. {
  203. "className": "title",
  204. "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~`|]|\\[\\]=?",
  205. "relevance": 0
  206. },
  207. {
  208. "className": "params",
  209. "begin": "\\(",
  210. "end": "\\)",
  211. "endsParent": true,
  212. "keywords": {
  213. "$ref": "#keywords"
  214. },
  215. "contains": {
  216. "$ref": "#contains.3.starts.contains"
  217. }
  218. },
  219. {
  220. "$ref": "#contains.0"
  221. },
  222. {
  223. "$ref": "#contains.1"
  224. },
  225. {
  226. "$ref": "#contains.2"
  227. }
  228. ]
  229. },
  230. {
  231. "begin": "[a-zA-Z]\\w*::"
  232. },
  233. {
  234. "className": "symbol",
  235. "begin": "[a-zA-Z_]\\w*(\\!|\\?)?:",
  236. "relevance": 0
  237. },
  238. {
  239. "className": "symbol",
  240. "begin": ":(?!\\s)",
  241. "contains": [
  242. {
  243. "$ref": "#contains.3.starts.contains.0"
  244. },
  245. {
  246. "begin": "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-\/+%^&*~`|]|\\[\\]=?"
  247. }
  248. ],
  249. "relevance": 0
  250. },
  251. {
  252. "className": "number",
  253. "begin": "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
  254. "relevance": 0
  255. },
  256. {
  257. "begin": "(\\$\\W)|((\\$|\\@\\@?)(\\w+))"
  258. },
  259. {
  260. "className": "params",
  261. "begin": "\\|",
  262. "end": "\\|",
  263. "keywords": {
  264. "$ref": "#keywords"
  265. }
  266. },
  267. {
  268. "begin": "(!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|\/=|\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~|unless)\\s*",
  269. "keywords": "unless",
  270. "contains": [
  271. {
  272. "$ref": "#contains.3.starts.contains.1"
  273. },
  274. {
  275. "className": "regexp",
  276. "contains": [
  277. {
  278. "$ref": "#contains.3.starts.contains.0.contains.0"
  279. },
  280. {
  281. "$ref": "#contains.3.starts.contains.0.contains.1"
  282. }
  283. ],
  284. "illegal": "\\n",
  285. "variants": [
  286. {
  287. "begin": "\/",
  288. "end": "\/[a-z]*"
  289. },
  290. {
  291. "begin": "%r{",
  292. "end": "}[a-z]*"
  293. },
  294. {
  295. "begin": "%r\\(",
  296. "end": "\\)[a-z]*"
  297. },
  298. {
  299. "begin": "%r!",
  300. "end": "![a-z]*"
  301. },
  302. {
  303. "begin": "%r\\[",
  304. "end": "\\][a-z]*"
  305. }
  306. ]
  307. },
  308. {
  309. "$ref": "#contains.0"
  310. },
  311. {
  312. "$ref": "#contains.1"
  313. },
  314. {
  315. "$ref": "#contains.2"
  316. }
  317. ],
  318. "relevance": 0
  319. },
  320. {
  321. "$ref": "#contains.0"
  322. },
  323. {
  324. "$ref": "#contains.1"
  325. },
  326. {
  327. "$ref": "#contains.2"
  328. }
  329. ]
  330. }
  331. },
  332. {
  333. "className": "meta",
  334. "begin": "^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",
  335. "starts": {
  336. "end": "$",
  337. "contains": {
  338. "$ref": "#contains.3.starts.contains"
  339. }
  340. }
  341. },
  342. {
  343. "$ref": "#contains.3.starts.contains.0"
  344. },
  345. {
  346. "$ref": "#contains.3.starts.contains.1"
  347. },
  348. {
  349. "$ref": "#contains.3.starts.contains.2"
  350. },
  351. {
  352. "$ref": "#contains.3.starts.contains.3"
  353. },
  354. {
  355. "$ref": "#contains.3.starts.contains.4"
  356. },
  357. {
  358. "$ref": "#contains.3.starts.contains.5"
  359. },
  360. {
  361. "$ref": "#contains.3.starts.contains.6"
  362. },
  363. {
  364. "$ref": "#contains.3.starts.contains.7"
  365. },
  366. {
  367. "$ref": "#contains.3.starts.contains.8"
  368. },
  369. {
  370. "$ref": "#contains.3.starts.contains.9"
  371. },
  372. {
  373. "$ref": "#contains.3.starts.contains.10"
  374. },
  375. {
  376. "$ref": "#contains.0"
  377. },
  378. {
  379. "$ref": "#contains.1"
  380. },
  381. {
  382. "$ref": "#contains.2"
  383. }
  384. ]
  385. }