mushcode_highlight_rules.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. /*
  2. * MUSHCodeMode
  3. */
  4. define(function(require, exports, module) {
  5. "use strict";
  6. var oop = require("../lib/oop");
  7. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  8. var MushCodeRules = function() {
  9. var keywords = (
  10. "@if|"+
  11. "@ifelse|"+
  12. "@switch|"+
  13. "@halt|"+
  14. "@dolist|"+
  15. "@create|"+
  16. "@scent|"+
  17. "@sound|"+
  18. "@touch|"+
  19. "@ataste|"+
  20. "@osound|"+
  21. "@ahear|"+
  22. "@aahear|"+
  23. "@amhear|"+
  24. "@otouch|"+
  25. "@otaste|"+
  26. "@drop|"+
  27. "@odrop|"+
  28. "@adrop|"+
  29. "@dropfail|"+
  30. "@odropfail|"+
  31. "@smell|"+
  32. "@oemit|"+
  33. "@emit|"+
  34. "@pemit|"+
  35. "@parent|"+
  36. "@clone|"+
  37. "@taste|"+
  38. "whisper|"+
  39. "page|"+
  40. "say|"+
  41. "pose|"+
  42. "semipose|"+
  43. "teach|"+
  44. "touch|"+
  45. "taste|"+
  46. "smell|"+
  47. "listen|"+
  48. "look|"+
  49. "move|"+
  50. "go|"+
  51. "home|"+
  52. "follow|"+
  53. "unfollow|"+
  54. "desert|"+
  55. "dismiss|"+
  56. "@tel"
  57. );
  58. var builtinConstants = (
  59. "=#0"
  60. );
  61. var builtinFunctions = (
  62. "default|"+
  63. "edefault|"+
  64. "eval|"+
  65. "get_eval|"+
  66. "get|"+
  67. "grep|"+
  68. "grepi|"+
  69. "hasattr|"+
  70. "hasattrp|"+
  71. "hasattrval|"+
  72. "hasattrpval|"+
  73. "lattr|"+
  74. "nattr|"+
  75. "poss|"+
  76. "udefault|"+
  77. "ufun|"+
  78. "u|"+
  79. "v|"+
  80. "uldefault|"+
  81. "xget|"+
  82. "zfun|"+
  83. "band|"+
  84. "bnand|"+
  85. "bnot|"+
  86. "bor|"+
  87. "bxor|"+
  88. "shl|"+
  89. "shr|"+
  90. "and|"+
  91. "cand|"+
  92. "cor|"+
  93. "eq|"+
  94. "gt|"+
  95. "gte|"+
  96. "lt|"+
  97. "lte|"+
  98. "nand|"+
  99. "neq|"+
  100. "nor|"+
  101. "not|"+
  102. "or|"+
  103. "t|"+
  104. "xor|"+
  105. "con|"+
  106. "entrances|"+
  107. "exit|"+
  108. "followers|"+
  109. "home|"+
  110. "lcon|"+
  111. "lexits|"+
  112. "loc|"+
  113. "locate|"+
  114. "lparent|"+
  115. "lsearch|"+
  116. "next|"+
  117. "num|"+
  118. "owner|"+
  119. "parent|"+
  120. "pmatch|"+
  121. "rloc|"+
  122. "rnum|"+
  123. "room|"+
  124. "where|"+
  125. "zone|"+
  126. "worn|"+
  127. "held|"+
  128. "carried|"+
  129. "acos|"+
  130. "asin|"+
  131. "atan|"+
  132. "ceil|"+
  133. "cos|"+
  134. "e|"+
  135. "exp|"+
  136. "fdiv|"+
  137. "fmod|"+
  138. "floor|"+
  139. "log|"+
  140. "ln|"+
  141. "pi|"+
  142. "power|"+
  143. "round|"+
  144. "sin|"+
  145. "sqrt|"+
  146. "tan|"+
  147. "aposs|"+
  148. "andflags|"+
  149. "conn|"+
  150. "commandssent|"+
  151. "controls|"+
  152. "doing|"+
  153. "elock|"+
  154. "findable|"+
  155. "flags|"+
  156. "fullname|"+
  157. "hasflag|"+
  158. "haspower|"+
  159. "hastype|"+
  160. "hidden|"+
  161. "idle|"+
  162. "isbaker|"+
  163. "lock|"+
  164. "lstats|"+
  165. "money|"+
  166. "who|"+
  167. "name|"+
  168. "nearby|"+
  169. "obj|"+
  170. "objflags|"+
  171. "photo|"+
  172. "poll|"+
  173. "powers|"+
  174. "pendingtext|"+
  175. "receivedtext|"+
  176. "restarts|"+
  177. "restarttime|"+
  178. "subj|"+
  179. "shortestpath|"+
  180. "tmoney|"+
  181. "type|"+
  182. "visible|"+
  183. "cat|"+
  184. "element|"+
  185. "elements|"+
  186. "extract|"+
  187. "filter|"+
  188. "filterbool|"+
  189. "first|"+
  190. "foreach|"+
  191. "fold|"+
  192. "grab|"+
  193. "graball|"+
  194. "index|"+
  195. "insert|"+
  196. "itemize|"+
  197. "items|"+
  198. "iter|"+
  199. "last|"+
  200. "ldelete|"+
  201. "map|"+
  202. "match|"+
  203. "matchall|"+
  204. "member|"+
  205. "mix|"+
  206. "munge|"+
  207. "pick|"+
  208. "remove|"+
  209. "replace|"+
  210. "rest|"+
  211. "revwords|"+
  212. "setdiff|"+
  213. "setinter|"+
  214. "setunion|"+
  215. "shuffle|"+
  216. "sort|"+
  217. "sortby|"+
  218. "splice|"+
  219. "step|"+
  220. "wordpos|"+
  221. "words|"+
  222. "add|"+
  223. "lmath|"+
  224. "max|"+
  225. "mean|"+
  226. "median|"+
  227. "min|"+
  228. "mul|"+
  229. "percent|"+
  230. "sign|"+
  231. "stddev|"+
  232. "sub|"+
  233. "val|"+
  234. "bound|"+
  235. "abs|"+
  236. "inc|"+
  237. "dec|"+
  238. "dist2d|"+
  239. "dist3d|"+
  240. "div|"+
  241. "floordiv|"+
  242. "mod|"+
  243. "modulo|"+
  244. "remainder|"+
  245. "vadd|"+
  246. "vdim|"+
  247. "vdot|"+
  248. "vmag|"+
  249. "vmax|"+
  250. "vmin|"+
  251. "vmul|"+
  252. "vsub|"+
  253. "vunit|"+
  254. "regedit|"+
  255. "regeditall|"+
  256. "regeditalli|"+
  257. "regediti|"+
  258. "regmatch|"+
  259. "regmatchi|"+
  260. "regrab|"+
  261. "regraball|"+
  262. "regraballi|"+
  263. "regrabi|"+
  264. "regrep|"+
  265. "regrepi|"+
  266. "after|"+
  267. "alphamin|"+
  268. "alphamax|"+
  269. "art|"+
  270. "before|"+
  271. "brackets|"+
  272. "capstr|"+
  273. "case|"+
  274. "caseall|"+
  275. "center|"+
  276. "containsfansi|"+
  277. "comp|"+
  278. "decompose|"+
  279. "decrypt|"+
  280. "delete|"+
  281. "edit|"+
  282. "encrypt|"+
  283. "escape|"+
  284. "if|"+
  285. "ifelse|"+
  286. "lcstr|"+
  287. "left|"+
  288. "lit|"+
  289. "ljust|"+
  290. "merge|"+
  291. "mid|"+
  292. "ostrlen|"+
  293. "pos|"+
  294. "repeat|"+
  295. "reverse|"+
  296. "right|"+
  297. "rjust|"+
  298. "scramble|"+
  299. "secure|"+
  300. "space|"+
  301. "spellnum|"+
  302. "squish|"+
  303. "strcat|"+
  304. "strmatch|"+
  305. "strinsert|"+
  306. "stripansi|"+
  307. "stripfansi|"+
  308. "strlen|"+
  309. "switch|"+
  310. "switchall|"+
  311. "table|"+
  312. "tr|"+
  313. "trim|"+
  314. "ucstr|"+
  315. "unsafe|"+
  316. "wrap|"+
  317. "ctitle|"+
  318. "cwho|"+
  319. "channels|"+
  320. "clock|"+
  321. "cflags|"+
  322. "ilev|"+
  323. "itext|"+
  324. "inum|"+
  325. "convsecs|"+
  326. "convutcsecs|"+
  327. "convtime|"+
  328. "ctime|"+
  329. "etimefmt|"+
  330. "isdaylight|"+
  331. "mtime|"+
  332. "secs|"+
  333. "msecs|"+
  334. "starttime|"+
  335. "time|"+
  336. "timefmt|"+
  337. "timestring|"+
  338. "utctime|"+
  339. "atrlock|"+
  340. "clone|"+
  341. "create|"+
  342. "cook|"+
  343. "dig|"+
  344. "emit|"+
  345. "lemit|"+
  346. "link|"+
  347. "oemit|"+
  348. "open|"+
  349. "pemit|"+
  350. "remit|"+
  351. "set|"+
  352. "tel|"+
  353. "wipe|"+
  354. "zemit|"+
  355. "fbcreate|"+
  356. "fbdestroy|"+
  357. "fbwrite|"+
  358. "fbclear|"+
  359. "fbcopy|"+
  360. "fbcopyto|"+
  361. "fbclip|"+
  362. "fbdump|"+
  363. "fbflush|"+
  364. "fbhset|"+
  365. "fblist|"+
  366. "fbstats|"+
  367. "qentries|"+
  368. "qentry|"+
  369. "play|"+
  370. "ansi|"+
  371. "break|"+
  372. "c|"+
  373. "asc|"+
  374. "die|"+
  375. "isdbref|"+
  376. "isint|"+
  377. "isnum|"+
  378. "isletters|"+
  379. "linecoords|"+
  380. "localize|"+
  381. "lnum|"+
  382. "nameshort|"+
  383. "null|"+
  384. "objeval|"+
  385. "r|"+
  386. "rand|"+
  387. "s|"+
  388. "setq|"+
  389. "setr|"+
  390. "soundex|"+
  391. "soundslike|"+
  392. "valid|"+
  393. "vchart|"+
  394. "vchart2|"+
  395. "vlabel|"+
  396. "@@|"+
  397. "bakerdays|"+
  398. "bodybuild|"+
  399. "box|"+
  400. "capall|"+
  401. "catalog|"+
  402. "children|"+
  403. "ctrailer|"+
  404. "darttime|"+
  405. "debt|"+
  406. "detailbar|"+
  407. "exploredroom|"+
  408. "fansitoansi|"+
  409. "fansitoxansi|"+
  410. "fullbar|"+
  411. "halfbar|"+
  412. "isdarted|"+
  413. "isnewbie|"+
  414. "isword|"+
  415. "lambda|"+
  416. "lobjects|"+
  417. "lplayers|"+
  418. "lthings|"+
  419. "lvexits|"+
  420. "lvobjects|"+
  421. "lvplayers|"+
  422. "lvthings|"+
  423. "newswrap|"+
  424. "numsuffix|"+
  425. "playerson|"+
  426. "playersthisweek|"+
  427. "randomad|"+
  428. "randword|"+
  429. "realrandword|"+
  430. "replacechr|"+
  431. "second|"+
  432. "splitamount|"+
  433. "strlenall|"+
  434. "text|"+
  435. "third|"+
  436. "tofansi|"+
  437. "totalac|"+
  438. "unique|"+
  439. "getaddressroom|"+
  440. "listpropertycomm|"+
  441. "listpropertyres|"+
  442. "lotowner|"+
  443. "lotrating|"+
  444. "lotratingcount|"+
  445. "lotvalue|"+
  446. "boughtproduct|"+
  447. "companyabb|"+
  448. "companyicon|"+
  449. "companylist|"+
  450. "companyname|"+
  451. "companyowners|"+
  452. "companyvalue|"+
  453. "employees|"+
  454. "invested|"+
  455. "productlist|"+
  456. "productname|"+
  457. "productowners|"+
  458. "productrating|"+
  459. "productratingcount|"+
  460. "productsoldat|"+
  461. "producttype|"+
  462. "ratedproduct|"+
  463. "soldproduct|"+
  464. "topproducts|"+
  465. "totalspentonproduct|"+
  466. "totalstock|"+
  467. "transfermoney|"+
  468. "uniquebuyercount|"+
  469. "uniqueproductsbought|"+
  470. "validcompany|"+
  471. "deletepicture|"+
  472. "fbsave|"+
  473. "getpicturesecurity|"+
  474. "haspicture|"+
  475. "listpictures|"+
  476. "picturesize|"+
  477. "replacecolor|"+
  478. "rgbtocolor|"+
  479. "savepicture|"+
  480. "setpicturesecurity|"+
  481. "showpicture|"+
  482. "piechart|"+
  483. "piechartlabel|"+
  484. "createmaze|"+
  485. "drawmaze|"+
  486. "drawwireframe"
  487. );
  488. var keywordMapper = this.createKeywordMapper({
  489. "invalid.deprecated": "debugger",
  490. "support.function": builtinFunctions,
  491. "constant.language": builtinConstants,
  492. "keyword": keywords
  493. }, "identifier");
  494. var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?";
  495. var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
  496. var octInteger = "(?:0[oO]?[0-7]+)";
  497. var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
  498. var binInteger = "(?:0[bB][01]+)";
  499. var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
  500. var exponent = "(?:[eE][+-]?\\d+)";
  501. var fraction = "(?:\\.\\d+)";
  502. var intPart = "(?:\\d+)";
  503. var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
  504. var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
  505. var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
  506. this.$rules = {
  507. "start" : [
  508. {
  509. token : "variable", // mush substitution register
  510. regex : "%[0-9]{1}"
  511. },
  512. {
  513. token : "variable", // mush substitution register
  514. regex : "%q[0-9A-Za-z]{1}"
  515. },
  516. {
  517. token : "variable", // mush special character register
  518. regex : "%[a-zA-Z]{1}"
  519. },
  520. {
  521. token: "variable.language",
  522. regex: "%[a-z0-9-_]+"
  523. },
  524. {
  525. token : "constant.numeric", // imaginary
  526. regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
  527. }, {
  528. token : "constant.numeric", // float
  529. regex : floatNumber
  530. }, {
  531. token : "constant.numeric", // long integer
  532. regex : integer + "[lL]\\b"
  533. }, {
  534. token : "constant.numeric", // integer
  535. regex : integer + "\\b"
  536. }, {
  537. token : keywordMapper,
  538. regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
  539. }, {
  540. token : "keyword.operator",
  541. regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
  542. }, {
  543. token : "paren.lparen",
  544. regex : "[\\[\\(\\{]"
  545. }, {
  546. token : "paren.rparen",
  547. regex : "[\\]\\)\\}]"
  548. }, {
  549. token : "text",
  550. regex : "\\s+"
  551. } ]
  552. };
  553. };
  554. oop.inherits(MushCodeRules, TextHighlightRules);
  555. exports.MushCodeRules = MushCodeRules;
  556. });