@openui5/sap.ui.codeeditor 1.120.7 → 1.121.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 (457) hide show
  1. package/.reuse/dep5 +23 -21
  2. package/THIRDPARTY.txt +6 -43
  3. package/package.json +2 -2
  4. package/src/sap/ui/codeeditor/.library +2 -2
  5. package/src/sap/ui/codeeditor/CodeEditor.js +41 -27
  6. package/src/sap/ui/codeeditor/js/ace/ace.js +16262 -16597
  7. package/src/sap/ui/codeeditor/js/ace/css/ace.css +358 -86
  8. package/src/sap/ui/codeeditor/js/ace/css/ambiance-3.png +0 -0
  9. package/src/sap/ui/codeeditor/js/ace/css/chrome-2.png +0 -0
  10. package/src/sap/ui/codeeditor/js/ace/css/cloud9_day-1.png +0 -0
  11. package/src/sap/ui/codeeditor/js/ace/css/cloud9_day-2.png +0 -0
  12. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night-1.png +0 -0
  13. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night-2.png +0 -0
  14. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night_low_color-1.png +0 -0
  15. package/src/sap/ui/codeeditor/js/ace/css/cloud9_night_low_color-2.png +0 -0
  16. package/src/sap/ui/codeeditor/js/ace/css/clouds-2.png +0 -0
  17. package/src/sap/ui/codeeditor/js/ace/css/clouds_midnight-2.png +0 -0
  18. package/src/sap/ui/codeeditor/js/ace/css/cobalt-2.png +0 -0
  19. package/src/sap/ui/codeeditor/js/ace/css/crimson_editor-2.png +0 -0
  20. package/src/sap/ui/codeeditor/js/ace/css/dawn-2.png +0 -0
  21. package/src/sap/ui/codeeditor/js/ace/css/dracula-2.png +0 -0
  22. package/src/sap/ui/codeeditor/js/ace/css/dreamweaver-2.png +0 -0
  23. package/src/sap/ui/codeeditor/js/ace/css/eclipse-2.png +0 -0
  24. package/src/sap/ui/codeeditor/js/ace/css/github-2.png +0 -0
  25. package/src/sap/ui/codeeditor/js/ace/css/github_dark-1.png +0 -0
  26. package/src/sap/ui/codeeditor/js/ace/css/github_dark-2.png +0 -0
  27. package/src/sap/ui/codeeditor/js/ace/css/gob-2.png +0 -0
  28. package/src/sap/ui/codeeditor/js/ace/css/gruvbox-2.png +0 -0
  29. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_dark_hard-1.png +0 -0
  30. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_light_hard-1.png +0 -0
  31. package/src/sap/ui/codeeditor/js/ace/css/gruvbox_light_hard-2.png +0 -0
  32. package/src/sap/ui/codeeditor/js/ace/css/idle_fingers-2.png +0 -0
  33. package/src/sap/ui/codeeditor/js/ace/css/iplastic-3.png +0 -0
  34. package/src/sap/ui/codeeditor/js/ace/css/katzenmilch-1.png +0 -0
  35. package/src/sap/ui/codeeditor/js/ace/css/katzenmilch-2.png +0 -0
  36. package/src/sap/ui/codeeditor/js/ace/css/kr_theme-2.png +0 -0
  37. package/src/sap/ui/codeeditor/js/ace/css/kuroir-1.png +0 -0
  38. package/src/sap/ui/codeeditor/js/ace/css/kuroir-2.png +0 -0
  39. package/src/sap/ui/codeeditor/js/ace/css/main-10.png +0 -0
  40. package/src/sap/ui/codeeditor/js/ace/css/main-11.png +0 -0
  41. package/src/sap/ui/codeeditor/js/ace/css/main-12.png +0 -0
  42. package/src/sap/ui/codeeditor/js/ace/css/main-13.png +0 -0
  43. package/src/sap/ui/codeeditor/js/ace/css/main-14.png +0 -0
  44. package/src/sap/ui/codeeditor/js/ace/css/main-15.png +0 -0
  45. package/src/sap/ui/codeeditor/js/ace/css/main-16.png +0 -0
  46. package/src/sap/ui/codeeditor/js/ace/css/main-17.png +0 -0
  47. package/src/sap/ui/codeeditor/js/ace/css/main-18.png +0 -0
  48. package/src/sap/ui/codeeditor/js/ace/css/main-19.png +0 -0
  49. package/src/sap/ui/codeeditor/js/ace/css/main-20.png +0 -0
  50. package/src/sap/ui/codeeditor/js/ace/css/main-21.png +0 -0
  51. package/src/sap/ui/codeeditor/js/ace/css/main-22.png +0 -0
  52. package/src/sap/ui/codeeditor/js/ace/css/main-22.svg +1 -0
  53. package/src/sap/ui/codeeditor/js/ace/css/main-23.png +0 -0
  54. package/src/sap/ui/codeeditor/js/ace/css/main-5.svg +7 -0
  55. package/src/sap/ui/codeeditor/js/ace/css/main-6.svg +7 -0
  56. package/src/sap/ui/codeeditor/js/ace/css/main-7.svg +9 -0
  57. package/src/sap/ui/codeeditor/js/ace/css/main-8.png +0 -0
  58. package/src/sap/ui/codeeditor/js/ace/css/main-8.svg +4 -0
  59. package/src/sap/ui/codeeditor/js/ace/css/main-9.png +0 -0
  60. package/src/sap/ui/codeeditor/js/ace/css/main-9.svg +4 -0
  61. package/src/sap/ui/codeeditor/js/ace/css/merbivore-2.png +0 -0
  62. package/src/sap/ui/codeeditor/js/ace/css/merbivore_soft-2.png +0 -0
  63. package/src/sap/ui/codeeditor/js/ace/css/mono_industrial-2.png +0 -0
  64. package/src/sap/ui/codeeditor/js/ace/css/monokai-2.png +0 -0
  65. package/src/sap/ui/codeeditor/js/ace/css/one_dark-2.png +0 -0
  66. package/src/sap/ui/codeeditor/js/ace/css/pastel_on_dark-2.png +0 -0
  67. package/src/sap/ui/codeeditor/js/ace/css/solarized_dark-2.png +0 -0
  68. package/src/sap/ui/codeeditor/js/ace/css/solarized_light-2.png +0 -0
  69. package/src/sap/ui/codeeditor/js/ace/css/sqlserver-2.png +0 -0
  70. package/src/sap/ui/codeeditor/js/ace/css/terminal-2.png +0 -0
  71. package/src/sap/ui/codeeditor/js/ace/css/textmate-2.png +0 -0
  72. package/src/sap/ui/codeeditor/js/ace/css/theme/ambiance.css +120 -68
  73. package/src/sap/ui/codeeditor/js/ace/css/theme/chaos.css +79 -66
  74. package/src/sap/ui/codeeditor/js/ace/css/theme/chrome.css +82 -43
  75. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_day.css +160 -0
  76. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_night.css +146 -0
  77. package/src/sap/ui/codeeditor/js/ace/css/theme/cloud9_night_low_color.css +134 -0
  78. package/src/sap/ui/codeeditor/js/ace/css/theme/clouds.css +59 -31
  79. package/src/sap/ui/codeeditor/js/ace/css/theme/clouds_midnight.css +60 -32
  80. package/src/sap/ui/codeeditor/js/ace/css/theme/cobalt.css +71 -38
  81. package/src/sap/ui/codeeditor/js/ace/css/theme/crimson_editor.css +79 -42
  82. package/src/sap/ui/codeeditor/js/ace/css/theme/dawn.css +70 -40
  83. package/src/sap/ui/codeeditor/js/ace/css/theme/dracula.css +95 -49
  84. package/src/sap/ui/codeeditor/js/ace/css/theme/dreamweaver.css +95 -49
  85. package/src/sap/ui/codeeditor/js/ace/css/theme/eclipse.css +62 -33
  86. package/src/sap/ui/codeeditor/js/ace/css/theme/github.css +71 -38
  87. package/src/sap/ui/codeeditor/js/ace/css/theme/github_dark.css +134 -0
  88. package/src/sap/ui/codeeditor/js/ace/css/theme/gob.css +68 -38
  89. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox.css +54 -28
  90. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox_dark_hard.css +163 -0
  91. package/src/sap/ui/codeeditor/js/ace/css/theme/gruvbox_light_hard.css +167 -0
  92. package/src/sap/ui/codeeditor/js/ace/css/theme/idle_fingers.css +62 -34
  93. package/src/sap/ui/codeeditor/js/ace/css/theme/iplastic.css +76 -45
  94. package/src/sap/ui/codeeditor/js/ace/css/theme/katzenmilch.css +91 -53
  95. package/src/sap/ui/codeeditor/js/ace/css/theme/kr_theme.css +67 -36
  96. package/src/sap/ui/codeeditor/js/ace/css/theme/kuroir.css +43 -17
  97. package/src/sap/ui/codeeditor/js/ace/css/theme/merbivore.css +57 -31
  98. package/src/sap/ui/codeeditor/js/ace/css/theme/merbivore_soft.css +57 -31
  99. package/src/sap/ui/codeeditor/js/ace/css/theme/mono_industrial.css +66 -36
  100. package/src/sap/ui/codeeditor/js/ace/css/theme/monokai.css +63 -35
  101. package/src/sap/ui/codeeditor/js/ace/css/theme/nord_dark.css +55 -29
  102. package/src/sap/ui/codeeditor/js/ace/css/theme/one_dark.css +88 -47
  103. package/src/sap/ui/codeeditor/js/ace/css/theme/pastel_on_dark.css +70 -38
  104. package/src/sap/ui/codeeditor/js/ace/css/theme/solarized_dark.css +52 -28
  105. package/src/sap/ui/codeeditor/js/ace/css/theme/solarized_light.css +55 -29
  106. package/src/sap/ui/codeeditor/js/ace/css/theme/sqlserver.css +90 -48
  107. package/src/sap/ui/codeeditor/js/ace/css/theme/terminal.css +64 -34
  108. package/src/sap/ui/codeeditor/js/ace/css/theme/textmate.css +82 -43
  109. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow.css +61 -33
  110. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night.css +61 -33
  111. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_blue.css +59 -32
  112. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_bright.css +71 -40
  113. package/src/sap/ui/codeeditor/js/ace/css/theme/tomorrow_night_eighties.css +61 -33
  114. package/src/sap/ui/codeeditor/js/ace/css/theme/twilight.css +66 -36
  115. package/src/sap/ui/codeeditor/js/ace/css/theme/vibrant_ink.css +59 -32
  116. package/src/sap/ui/codeeditor/js/ace/css/theme/xcode.css +54 -28
  117. package/src/sap/ui/codeeditor/js/ace/css/tomorrow-2.png +0 -0
  118. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night-2.png +0 -0
  119. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_blue-2.png +0 -0
  120. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_bright-2.png +0 -0
  121. package/src/sap/ui/codeeditor/js/ace/css/tomorrow_night_eighties-2.png +0 -0
  122. package/src/sap/ui/codeeditor/js/ace/css/twilight-2.png +0 -0
  123. package/src/sap/ui/codeeditor/js/ace/css/vibrant_ink-2.png +0 -0
  124. package/src/sap/ui/codeeditor/js/ace/css/xcode-2.png +0 -0
  125. package/src/sap/ui/codeeditor/js/ace/ext-beautify.js +90 -91
  126. package/src/sap/ui/codeeditor/js/ace/ext-code_lens.js +39 -75
  127. package/src/sap/ui/codeeditor/js/ace/ext-command_bar.js +457 -0
  128. package/src/sap/ui/codeeditor/js/ace/ext-elastic_tabstops_lite.js +47 -97
  129. package/src/sap/ui/codeeditor/js/ace/ext-emmet.js +496 -552
  130. package/src/sap/ui/codeeditor/js/ace/ext-hardwrap.js +47 -16
  131. package/src/sap/ui/codeeditor/js/ace/ext-inline_autocomplete.js +3269 -0
  132. package/src/sap/ui/codeeditor/js/ace/ext-keybinding_menu.js +45 -105
  133. package/src/sap/ui/codeeditor/js/ace/ext-language_tools.js +1438 -1128
  134. package/src/sap/ui/codeeditor/js/ace/ext-linking.js +8 -16
  135. package/src/sap/ui/codeeditor/js/ace/ext-modelist.js +198 -185
  136. package/src/sap/ui/codeeditor/js/ace/ext-options.js +405 -443
  137. package/src/sap/ui/codeeditor/js/ace/ext-prompt.js +1682 -1508
  138. package/src/sap/ui/codeeditor/js/ace/ext-rtl.js +26 -28
  139. package/src/sap/ui/codeeditor/js/ace/ext-searchbox.js +160 -332
  140. package/src/sap/ui/codeeditor/js/ace/ext-settings_menu.js +409 -446
  141. package/src/sap/ui/codeeditor/js/ace/ext-simple_tokenizer.js +45 -0
  142. package/src/sap/ui/codeeditor/js/ace/ext-spellcheck.js +4 -10
  143. package/src/sap/ui/codeeditor/js/ace/ext-split.js +41 -63
  144. package/src/sap/ui/codeeditor/js/ace/ext-statusbar.js +19 -27
  145. package/src/sap/ui/codeeditor/js/ace/ext-themelist.js +45 -41
  146. package/src/sap/ui/codeeditor/js/ace/ext-whitespace.js +62 -83
  147. package/src/sap/ui/codeeditor/js/ace/keybinding-emacs.js +442 -551
  148. package/src/sap/ui/codeeditor/js/ace/keybinding-sublime.js +338 -351
  149. package/src/sap/ui/codeeditor/js/ace/keybinding-vim.js +5242 -4758
  150. package/src/sap/ui/codeeditor/js/ace/keybinding-vscode.js +228 -235
  151. package/src/sap/ui/codeeditor/js/ace/mode-abap.js +72 -93
  152. package/src/sap/ui/codeeditor/js/ace/mode-abc.js +136 -164
  153. package/src/sap/ui/codeeditor/js/ace/mode-actionscript.js +109 -150
  154. package/src/sap/ui/codeeditor/js/ace/mode-ada.js +45 -74
  155. package/src/sap/ui/codeeditor/js/ace/mode-alda.js +77 -109
  156. package/src/sap/ui/codeeditor/js/ace/mode-apache_conf.js +196 -241
  157. package/src/sap/ui/codeeditor/js/ace/mode-apex.js +192 -247
  158. package/src/sap/ui/codeeditor/js/ace/mode-applescript.js +56 -102
  159. package/src/sap/ui/codeeditor/js/ace/mode-aql.js +85 -95
  160. package/src/sap/ui/codeeditor/js/ace/mode-asciidoc.js +120 -158
  161. package/src/sap/ui/codeeditor/js/ace/mode-asl.js +233 -298
  162. package/src/sap/ui/codeeditor/js/ace/mode-assembly_x86.js +78 -101
  163. package/src/sap/ui/codeeditor/js/ace/mode-astro.js +2414 -0
  164. package/src/sap/ui/codeeditor/js/ace/mode-autohotkey.js +80 -116
  165. package/src/sap/ui/codeeditor/js/ace/mode-batchfile.js +74 -105
  166. package/src/sap/ui/codeeditor/js/ace/mode-bibtex.js +318 -0
  167. package/src/sap/ui/codeeditor/js/ace/mode-c9search.js +72 -115
  168. package/src/sap/ui/codeeditor/js/ace/mode-c_cpp.js +171 -257
  169. package/src/sap/ui/codeeditor/js/ace/mode-cirru.js +97 -115
  170. package/src/sap/ui/codeeditor/js/ace/mode-clojure.js +126 -119
  171. package/src/sap/ui/codeeditor/js/ace/mode-cobol.js +48 -67
  172. package/src/sap/ui/codeeditor/js/ace/mode-coffee.js +203 -268
  173. package/src/sap/ui/codeeditor/js/ace/mode-coldfusion.js +1029 -1276
  174. package/src/sap/ui/codeeditor/js/ace/mode-crystal.js +337 -393
  175. package/src/sap/ui/codeeditor/js/ace/mode-csharp.js +127 -216
  176. package/src/sap/ui/codeeditor/js/ace/mode-csound_document.js +1539 -1569
  177. package/src/sap/ui/codeeditor/js/ace/mode-csound_orchestra.js +786 -898
  178. package/src/sap/ui/codeeditor/js/ace/mode-csound_score.js +184 -237
  179. package/src/sap/ui/codeeditor/js/ace/mode-csp.js +37 -37
  180. package/src/sap/ui/codeeditor/js/ace/mode-css.js +293 -384
  181. package/src/sap/ui/codeeditor/js/ace/mode-curly.js +1019 -1262
  182. package/src/sap/ui/codeeditor/js/ace/mode-cuttlefish.js +56 -0
  183. package/src/sap/ui/codeeditor/js/ace/mode-d.js +163 -233
  184. package/src/sap/ui/codeeditor/js/ace/mode-dart.js +330 -427
  185. package/src/sap/ui/codeeditor/js/ace/mode-diff.js +20 -38
  186. package/src/sap/ui/codeeditor/js/ace/mode-django.js +1032 -1271
  187. package/src/sap/ui/codeeditor/js/ace/mode-dockerfile.js +211 -284
  188. package/src/sap/ui/codeeditor/js/ace/mode-dot.js +131 -200
  189. package/src/sap/ui/codeeditor/js/ace/mode-drools.js +408 -349
  190. package/src/sap/ui/codeeditor/js/ace/mode-edifact.js +89 -125
  191. package/src/sap/ui/codeeditor/js/ace/mode-eiffel.js +47 -62
  192. package/src/sap/ui/codeeditor/js/ace/mode-ejs.js +1350 -1666
  193. package/src/sap/ui/codeeditor/js/ace/mode-elixir.js +349 -407
  194. package/src/sap/ui/codeeditor/js/ace/mode-elm.js +136 -168
  195. package/src/sap/ui/codeeditor/js/ace/mode-erlang.js +707 -881
  196. package/src/sap/ui/codeeditor/js/ace/mode-flix.js +164 -0
  197. package/src/sap/ui/codeeditor/js/ace/mode-forth.js +128 -172
  198. package/src/sap/ui/codeeditor/js/ace/mode-fortran.js +177 -246
  199. package/src/sap/ui/codeeditor/js/ace/mode-fsharp.js +92 -131
  200. package/src/sap/ui/codeeditor/js/ace/mode-fsl.js +91 -124
  201. package/src/sap/ui/codeeditor/js/ace/mode-ftl.js +813 -748
  202. package/src/sap/ui/codeeditor/js/ace/mode-gcode.js +52 -71
  203. package/src/sap/ui/codeeditor/js/ace/mode-gherkin.js +105 -119
  204. package/src/sap/ui/codeeditor/js/ace/mode-gitignore.js +12 -22
  205. package/src/sap/ui/codeeditor/js/ace/mode-glsl.js +184 -289
  206. package/src/sap/ui/codeeditor/js/ace/mode-gobstones.js +686 -623
  207. package/src/sap/ui/codeeditor/js/ace/mode-golang.js +167 -239
  208. package/src/sap/ui/codeeditor/js/ace/mode-graphqlschema.js +48 -88
  209. package/src/sap/ui/codeeditor/js/ace/mode-groovy.js +577 -471
  210. package/src/sap/ui/codeeditor/js/ace/mode-haml.js +1062 -1026
  211. package/src/sap/ui/codeeditor/js/ace/mode-handlebars.js +1061 -1305
  212. package/src/sap/ui/codeeditor/js/ace/mode-haskell.js +199 -255
  213. package/src/sap/ui/codeeditor/js/ace/mode-haskell_cabal.js +81 -87
  214. package/src/sap/ui/codeeditor/js/ace/mode-haxe.js +111 -184
  215. package/src/sap/ui/codeeditor/js/ace/mode-hjson.js +164 -199
  216. package/src/sap/ui/codeeditor/js/ace/mode-html.js +1009 -1239
  217. package/src/sap/ui/codeeditor/js/ace/mode-html_elixir.js +1402 -1705
  218. package/src/sap/ui/codeeditor/js/ace/mode-html_ruby.js +1390 -1706
  219. package/src/sap/ui/codeeditor/js/ace/mode-ini.js +58 -82
  220. package/src/sap/ui/codeeditor/js/ace/mode-io.js +85 -123
  221. package/src/sap/ui/codeeditor/js/ace/mode-ion.js +477 -0
  222. package/src/sap/ui/codeeditor/js/ace/mode-jack.js +109 -162
  223. package/src/sap/ui/codeeditor/js/ace/mode-jade.js +1339 -1344
  224. package/src/sap/ui/codeeditor/js/ace/mode-java.js +710 -498
  225. package/src/sap/ui/codeeditor/js/ace/mode-javascript.js +441 -354
  226. package/src/sap/ui/codeeditor/js/ace/mode-jexl.js +270 -0
  227. package/src/sap/ui/codeeditor/js/ace/mode-json.js +93 -147
  228. package/src/sap/ui/codeeditor/js/ace/mode-json5.js +128 -180
  229. package/src/sap/ui/codeeditor/js/ace/mode-jsoniq.js +58 -112
  230. package/src/sap/ui/codeeditor/js/ace/mode-jsp.js +1045 -865
  231. package/src/sap/ui/codeeditor/js/ace/mode-jssm.js +158 -190
  232. package/src/sap/ui/codeeditor/js/ace/mode-jsx.js +121 -194
  233. package/src/sap/ui/codeeditor/js/ace/mode-julia.js +128 -177
  234. package/src/sap/ui/codeeditor/js/ace/mode-kotlin.js +262 -614
  235. package/src/sap/ui/codeeditor/js/ace/mode-latex.js +94 -138
  236. package/src/sap/ui/codeeditor/js/ace/mode-latte.js +1120 -1366
  237. package/src/sap/ui/codeeditor/js/ace/mode-less.js +342 -442
  238. package/src/sap/ui/codeeditor/js/ace/mode-liquid.js +1353 -1414
  239. package/src/sap/ui/codeeditor/js/ace/mode-lisp.js +65 -73
  240. package/src/sap/ui/codeeditor/js/ace/mode-livescript.js +217 -224
  241. package/src/sap/ui/codeeditor/js/ace/mode-logiql.js +97 -142
  242. package/src/sap/ui/codeeditor/js/ace/mode-logtalk.js +187 -227
  243. package/src/sap/ui/codeeditor/js/ace/mode-lsl.js +99 -155
  244. package/src/sap/ui/codeeditor/js/ace/mode-lua.js +152 -211
  245. package/src/sap/ui/codeeditor/js/ace/mode-luapage.js +1167 -1470
  246. package/src/sap/ui/codeeditor/js/ace/mode-lucene.js +25 -34
  247. package/src/sap/ui/codeeditor/js/ace/mode-makefile.js +244 -282
  248. package/src/sap/ui/codeeditor/js/ace/mode-markdown.js +1858 -2177
  249. package/src/sap/ui/codeeditor/js/ace/mode-mask.js +964 -1007
  250. package/src/sap/ui/codeeditor/js/ace/mode-matlab.js +197 -221
  251. package/src/sap/ui/codeeditor/js/ace/mode-maze.js +127 -163
  252. package/src/sap/ui/codeeditor/js/ace/mode-mediawiki.js +464 -476
  253. package/src/sap/ui/codeeditor/js/ace/mode-mel.js +90 -140
  254. package/src/sap/ui/codeeditor/js/ace/mode-mips.js +101 -134
  255. package/src/sap/ui/codeeditor/js/ace/mode-mixal.js +63 -75
  256. package/src/sap/ui/codeeditor/js/ace/mode-mushcode.js +537 -576
  257. package/src/sap/ui/codeeditor/js/ace/mode-mysql.js +85 -102
  258. package/src/sap/ui/codeeditor/js/ace/mode-nasal.js +513 -0
  259. package/src/sap/ui/codeeditor/js/ace/mode-nginx.js +119 -155
  260. package/src/sap/ui/codeeditor/js/ace/mode-nim.js +159 -197
  261. package/src/sap/ui/codeeditor/js/ace/mode-nix.js +283 -375
  262. package/src/sap/ui/codeeditor/js/ace/mode-nsis.js +139 -172
  263. package/src/sap/ui/codeeditor/js/ace/mode-nunjucks.js +1138 -1378
  264. package/src/sap/ui/codeeditor/js/ace/mode-objectivec.js +400 -514
  265. package/src/sap/ui/codeeditor/js/ace/mode-ocaml.js +77 -120
  266. package/src/sap/ui/codeeditor/js/ace/mode-odin.js +449 -0
  267. package/src/sap/ui/codeeditor/js/ace/mode-partiql.js +750 -0
  268. package/src/sap/ui/codeeditor/js/ace/mode-pascal.js +28 -47
  269. package/src/sap/ui/codeeditor/js/ace/mode-perl.js +122 -185
  270. package/src/sap/ui/codeeditor/js/ace/mode-pgsql.js +974 -851
  271. package/src/sap/ui/codeeditor/js/ace/mode-php.js +2282 -1502
  272. package/src/sap/ui/codeeditor/js/ace/mode-php_laravel_blade.js +2463 -1696
  273. package/src/sap/ui/codeeditor/js/ace/mode-pig.js +133 -165
  274. package/src/sap/ui/codeeditor/js/ace/mode-plain_text.js +5 -10
  275. package/src/sap/ui/codeeditor/js/ace/mode-plsql.js +268 -0
  276. package/src/sap/ui/codeeditor/js/ace/mode-powershell.js +332 -183
  277. package/src/sap/ui/codeeditor/js/ace/mode-praat.js +168 -234
  278. package/src/sap/ui/codeeditor/js/ace/mode-prisma.js +292 -324
  279. package/src/sap/ui/codeeditor/js/ace/mode-prolog.js +180 -246
  280. package/src/sap/ui/codeeditor/js/ace/mode-properties.js +26 -37
  281. package/src/sap/ui/codeeditor/js/ace/mode-protobuf.js +232 -327
  282. package/src/sap/ui/codeeditor/js/ace/mode-prql.js +320 -0
  283. package/src/sap/ui/codeeditor/js/ace/mode-puppet.js +68 -120
  284. package/src/sap/ui/codeeditor/js/ace/mode-python.js +338 -370
  285. package/src/sap/ui/codeeditor/js/ace/mode-qml.js +244 -279
  286. package/src/sap/ui/codeeditor/js/ace/mode-r.js +295 -220
  287. package/src/sap/ui/codeeditor/js/ace/mode-raku.js +356 -433
  288. package/src/sap/ui/codeeditor/js/ace/mode-razor.js +1130 -1374
  289. package/src/sap/ui/codeeditor/js/ace/mode-rdoc.js +214 -171
  290. package/src/sap/ui/codeeditor/js/ace/mode-red.js +212 -274
  291. package/src/sap/ui/codeeditor/js/ace/mode-redshift.js +181 -220
  292. package/src/sap/ui/codeeditor/js/ace/mode-rhtml.js +1325 -1443
  293. package/src/sap/ui/codeeditor/js/ace/mode-robot.js +168 -0
  294. package/src/sap/ui/codeeditor/js/ace/mode-rst.js +217 -229
  295. package/src/sap/ui/codeeditor/js/ace/mode-ruby.js +338 -420
  296. package/src/sap/ui/codeeditor/js/ace/mode-rust.js +258 -155
  297. package/src/sap/ui/codeeditor/js/ace/mode-sac.js +349 -0
  298. package/src/sap/ui/codeeditor/js/ace/mode-sass.js +257 -309
  299. package/src/sap/ui/codeeditor/js/ace/mode-scad.js +127 -191
  300. package/src/sap/ui/codeeditor/js/ace/mode-scala.js +572 -468
  301. package/src/sap/ui/codeeditor/js/ace/mode-scheme.js +104 -126
  302. package/src/sap/ui/codeeditor/js/ace/mode-scrypt.js +181 -228
  303. package/src/sap/ui/codeeditor/js/ace/mode-scss.js +364 -472
  304. package/src/sap/ui/codeeditor/js/ace/mode-sh.js +204 -266
  305. package/src/sap/ui/codeeditor/js/ace/mode-sjs.js +477 -405
  306. package/src/sap/ui/codeeditor/js/ace/mode-slim.js +2631 -3161
  307. package/src/sap/ui/codeeditor/js/ace/mode-smarty.js +1075 -1334
  308. package/src/sap/ui/codeeditor/js/ace/mode-smithy.js +276 -327
  309. package/src/sap/ui/codeeditor/js/ace/mode-snippets.js +78 -102
  310. package/src/sap/ui/codeeditor/js/ace/mode-soy_template.js +1251 -1548
  311. package/src/sap/ui/codeeditor/js/ace/mode-space.js +47 -63
  312. package/src/sap/ui/codeeditor/js/ace/mode-sparql.js +139 -171
  313. package/src/sap/ui/codeeditor/js/ace/mode-sql.js +77 -133
  314. package/src/sap/ui/codeeditor/js/ace/mode-sqlserver.js +138 -192
  315. package/src/sap/ui/codeeditor/js/ace/mode-stylus.js +306 -338
  316. package/src/sap/ui/codeeditor/js/ace/mode-svg.js +642 -794
  317. package/src/sap/ui/codeeditor/js/ace/mode-swift.js +96 -150
  318. package/src/sap/ui/codeeditor/js/ace/mode-tcl.js +151 -200
  319. package/src/sap/ui/codeeditor/js/ace/mode-terraform.js +78 -132
  320. package/src/sap/ui/codeeditor/js/ace/mode-tex.js +148 -96
  321. package/src/sap/ui/codeeditor/js/ace/mode-textile.js +45 -70
  322. package/src/sap/ui/codeeditor/js/ace/mode-toml.js +63 -87
  323. package/src/sap/ui/codeeditor/js/ace/mode-tsx.js +462 -384
  324. package/src/sap/ui/codeeditor/js/ace/mode-turtle.js +119 -151
  325. package/src/sap/ui/codeeditor/js/ace/mode-twig.js +1099 -1350
  326. package/src/sap/ui/codeeditor/js/ace/mode-typescript.js +455 -376
  327. package/src/sap/ui/codeeditor/js/ace/mode-vala.js +382 -505
  328. package/src/sap/ui/codeeditor/js/ace/mode-vbscript.js +231 -264
  329. package/src/sap/ui/codeeditor/js/ace/mode-velocity.js +1116 -1388
  330. package/src/sap/ui/codeeditor/js/ace/mode-verilog.js +61 -81
  331. package/src/sap/ui/codeeditor/js/ace/mode-vhdl.js +57 -79
  332. package/src/sap/ui/codeeditor/js/ace/mode-visualforce.js +1046 -1292
  333. package/src/sap/ui/codeeditor/js/ace/mode-wollok.js +525 -417
  334. package/src/sap/ui/codeeditor/js/ace/mode-xml.js +182 -389
  335. package/src/sap/ui/codeeditor/js/ace/mode-xquery.js +58 -112
  336. package/src/sap/ui/codeeditor/js/ace/mode-yaml.js +202 -137
  337. package/src/sap/ui/codeeditor/js/ace/mode-zeek.js +237 -274
  338. package/src/sap/ui/codeeditor/js/ace/snippets/abc.js +5 -34
  339. package/src/sap/ui/codeeditor/js/ace/snippets/actionscript.js +5 -160
  340. package/src/sap/ui/codeeditor/js/ace/snippets/astro.js +9 -0
  341. package/src/sap/ui/codeeditor/js/ace/snippets/bibtex.js +9 -0
  342. package/src/sap/ui/codeeditor/js/ace/snippets/c_cpp.js +5 -134
  343. package/src/sap/ui/codeeditor/js/ace/snippets/clojure.js +5 -93
  344. package/src/sap/ui/codeeditor/js/ace/snippets/coffee.js +5 -98
  345. package/src/sap/ui/codeeditor/js/ace/snippets/csound_document.js +5 -13
  346. package/src/sap/ui/codeeditor/js/ace/snippets/csound_orchestra.js +5 -50
  347. package/src/sap/ui/codeeditor/js/ace/snippets/css.js +5 -970
  348. package/src/sap/ui/codeeditor/js/ace/snippets/cuttlefish.js +9 -0
  349. package/src/sap/ui/codeeditor/js/ace/snippets/dart.js +5 -86
  350. package/src/sap/ui/codeeditor/js/ace/snippets/diff.js +5 -14
  351. package/src/sap/ui/codeeditor/js/ace/snippets/django.js +5 -111
  352. package/src/sap/ui/codeeditor/js/ace/snippets/drools.js +5 -22
  353. package/src/sap/ui/codeeditor/js/ace/snippets/edifact.js +8 -246
  354. package/src/sap/ui/codeeditor/js/ace/snippets/erlang.js +5 -163
  355. package/src/sap/ui/codeeditor/js/ace/snippets/flix.js +9 -0
  356. package/src/sap/ui/codeeditor/js/ace/snippets/fsl.js +6 -4
  357. package/src/sap/ui/codeeditor/js/ace/snippets/gobstones.js +5 -1707
  358. package/src/sap/ui/codeeditor/js/ace/snippets/graphqlschema.js +5 -35
  359. package/src/sap/ui/codeeditor/js/ace/snippets/haml.js +5 -23
  360. package/src/sap/ui/codeeditor/js/ace/snippets/haskell.js +5 -85
  361. package/src/sap/ui/codeeditor/js/ace/snippets/html.js +5 -856
  362. package/src/sap/ui/codeeditor/js/ace/snippets/io.js +1 -3
  363. package/src/sap/ui/codeeditor/js/ace/snippets/ion.js +9 -0
  364. package/src/sap/ui/codeeditor/js/ace/snippets/java.js +5 -243
  365. package/src/sap/ui/codeeditor/js/ace/snippets/javascript.js +5 -198
  366. package/src/sap/ui/codeeditor/js/ace/snippets/jexl.js +9 -0
  367. package/src/sap/ui/codeeditor/js/ace/snippets/jsoniq.js +44 -41
  368. package/src/sap/ui/codeeditor/js/ace/snippets/jsp.js +5 -102
  369. package/src/sap/ui/codeeditor/js/ace/snippets/liquid.js +5 -884
  370. package/src/sap/ui/codeeditor/js/ace/snippets/lsl.js +5 -1235
  371. package/src/sap/ui/codeeditor/js/ace/snippets/lua.js +5 -24
  372. package/src/sap/ui/codeeditor/js/ace/snippets/makefile.js +5 -7
  373. package/src/sap/ui/codeeditor/js/ace/snippets/markdown.js +5 -91
  374. package/src/sap/ui/codeeditor/js/ace/snippets/maze.js +5 -12
  375. package/src/sap/ui/codeeditor/js/ace/snippets/nasal.js +9 -0
  376. package/src/sap/ui/codeeditor/js/ace/snippets/odin.js +9 -0
  377. package/src/sap/ui/codeeditor/js/ace/snippets/partiql.js +9 -0
  378. package/src/sap/ui/codeeditor/js/ace/snippets/perl.js +5 -350
  379. package/src/sap/ui/codeeditor/js/ace/snippets/php.js +5 -386
  380. package/src/sap/ui/codeeditor/js/ace/snippets/plsql.js +9 -0
  381. package/src/sap/ui/codeeditor/js/ace/snippets/prql.js +9 -0
  382. package/src/sap/ui/codeeditor/js/ace/snippets/python.js +5 -161
  383. package/src/sap/ui/codeeditor/js/ace/snippets/r.js +5 -124
  384. package/src/sap/ui/codeeditor/js/ace/snippets/razor.js +5 -6
  385. package/src/sap/ui/codeeditor/js/ace/snippets/robot.js +16 -0
  386. package/src/sap/ui/codeeditor/js/ace/snippets/rst.js +5 -25
  387. package/src/sap/ui/codeeditor/js/ace/snippets/ruby.js +5 -931
  388. package/src/sap/ui/codeeditor/js/ace/snippets/sac.js +9 -0
  389. package/src/sap/ui/codeeditor/js/ace/snippets/sh.js +5 -86
  390. package/src/sap/ui/codeeditor/js/ace/snippets/snippets.js +5 -12
  391. package/src/sap/ui/codeeditor/js/ace/snippets/sql.js +5 -29
  392. package/src/sap/ui/codeeditor/js/ace/snippets/sqlserver.js +5 -72
  393. package/src/sap/ui/codeeditor/js/ace/snippets/tcl.js +5 -95
  394. package/src/sap/ui/codeeditor/js/ace/snippets/tex.js +5 -193
  395. package/src/sap/ui/codeeditor/js/ace/snippets/textile.js +5 -33
  396. package/src/sap/ui/codeeditor/js/ace/snippets/vala.js +1 -2
  397. package/src/sap/ui/codeeditor/js/ace/snippets/velocity.js +5 -31
  398. package/src/sap/ui/codeeditor/js/ace/snippets/wollok.js +5 -87
  399. package/src/sap/ui/codeeditor/js/ace/snippets/xquery.js +44 -41
  400. package/src/sap/ui/codeeditor/js/ace/theme-ambiance.js +5 -172
  401. package/src/sap/ui/codeeditor/js/ace/theme-chaos.js +5 -150
  402. package/src/sap/ui/codeeditor/js/ace/theme-chrome.js +6 -123
  403. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_day.js +19 -0
  404. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_night.js +18 -0
  405. package/src/sap/ui/codeeditor/js/ace/theme-cloud9_night_low_color.js +18 -0
  406. package/src/sap/ui/codeeditor/js/ace/theme-clouds.js +6 -90
  407. package/src/sap/ui/codeeditor/js/ace/theme-clouds_midnight.js +6 -91
  408. package/src/sap/ui/codeeditor/js/ace/theme-cobalt.js +6 -108
  409. package/src/sap/ui/codeeditor/js/ace/theme-crimson_editor.js +6 -113
  410. package/src/sap/ui/codeeditor/js/ace/theme-dawn.js +6 -103
  411. package/src/sap/ui/codeeditor/js/ace/theme-dracula.js +6 -122
  412. package/src/sap/ui/codeeditor/js/ace/theme-dreamweaver.js +7 -137
  413. package/src/sap/ui/codeeditor/js/ace/theme-eclipse.js +6 -92
  414. package/src/sap/ui/codeeditor/js/ace/theme-github.js +7 -99
  415. package/src/sap/ui/codeeditor/js/ace/theme-github_dark.js +18 -0
  416. package/src/sap/ui/codeeditor/js/ace/theme-gob.js +6 -107
  417. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox.js +5 -76
  418. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox_dark_hard.js +18 -0
  419. package/src/sap/ui/codeeditor/js/ace/theme-gruvbox_light_hard.js +18 -0
  420. package/src/sap/ui/codeeditor/js/ace/theme-idle_fingers.js +6 -91
  421. package/src/sap/ui/codeeditor/js/ace/theme-iplastic.js +6 -116
  422. package/src/sap/ui/codeeditor/js/ace/theme-katzenmilch.js +6 -116
  423. package/src/sap/ui/codeeditor/js/ace/theme-kr_theme.js +6 -99
  424. package/src/sap/ui/codeeditor/js/ace/theme-kuroir.js +6 -56
  425. package/src/sap/ui/codeeditor/js/ace/theme-merbivore.js +6 -90
  426. package/src/sap/ui/codeeditor/js/ace/theme-merbivore_soft.js +6 -91
  427. package/src/sap/ui/codeeditor/js/ace/theme-mono_industrial.js +6 -102
  428. package/src/sap/ui/codeeditor/js/ace/theme-monokai.js +6 -100
  429. package/src/sap/ui/codeeditor/js/ace/theme-nord_dark.js +6 -89
  430. package/src/sap/ui/codeeditor/js/ace/theme-one_dark.js +10 -131
  431. package/src/sap/ui/codeeditor/js/ace/theme-pastel_on_dark.js +6 -103
  432. package/src/sap/ui/codeeditor/js/ace/theme-solarized_dark.js +6 -83
  433. package/src/sap/ui/codeeditor/js/ace/theme-solarized_light.js +6 -86
  434. package/src/sap/ui/codeeditor/js/ace/theme-sqlserver.js +6 -133
  435. package/src/sap/ui/codeeditor/js/ace/theme-terminal.js +6 -109
  436. package/src/sap/ui/codeeditor/js/ace/theme-textmate.js +3 -124
  437. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow.js +6 -103
  438. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night.js +6 -103
  439. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_blue.js +6 -101
  440. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_bright.js +6 -116
  441. package/src/sap/ui/codeeditor/js/ace/theme-tomorrow_night_eighties.js +6 -103
  442. package/src/sap/ui/codeeditor/js/ace/theme-twilight.js +6 -104
  443. package/src/sap/ui/codeeditor/js/ace/theme-vibrant_ink.js +6 -89
  444. package/src/sap/ui/codeeditor/js/ace/theme-xcode.js +6 -83
  445. package/src/sap/ui/codeeditor/js/ace/worker-base.js +516 -595
  446. package/src/sap/ui/codeeditor/js/ace/worker-coffee.js +496 -575
  447. package/src/sap/ui/codeeditor/js/ace/worker-css.js +501 -578
  448. package/src/sap/ui/codeeditor/js/ace/worker-html.js +515 -584
  449. package/src/sap/ui/codeeditor/js/ace/worker-javascript.js +2964 -2551
  450. package/src/sap/ui/codeeditor/js/ace/worker-json.js +496 -575
  451. package/src/sap/ui/codeeditor/js/ace/worker-lua.js +497 -576
  452. package/src/sap/ui/codeeditor/js/ace/worker-php.js +2906 -2795
  453. package/src/sap/ui/codeeditor/js/ace/worker-xml.js +496 -575
  454. package/src/sap/ui/codeeditor/js/ace/worker-xquery.js +496 -575
  455. package/src/sap/ui/codeeditor/js/ace/worker-yaml.js +5851 -0
  456. package/src/sap/ui/codeeditor/library.js +6 -5
  457. package/LICENSES/BSD-2-Clause.txt +0 -22
@@ -1,21 +1,16 @@
1
- ace.define("ace/mode/css_highlight_rules",[], function(require, exports, module) {
2
- "use strict";
3
-
1
+ ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
4
2
  var oop = require("../lib/oop");
5
3
  var lang = require("../lib/lang");
6
4
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
7
5
  var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index";
8
6
  var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
9
- var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom";
7
+ var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom";
10
8
  var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen";
11
9
  var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace";
12
-
13
10
  var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
14
11
  var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
15
- var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
16
-
17
- var CssHighlightRules = function() {
18
-
12
+ var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b";
13
+ var CssHighlightRules = function () {
19
14
  var keywordMapper = this.createKeywordMapper({
20
15
  "support.function": supportFunction,
21
16
  "support.constant": supportConstant,
@@ -23,263 +18,317 @@ var CssHighlightRules = function() {
23
18
  "support.constant.color": supportConstantColor,
24
19
  "support.constant.fonts": supportConstantFonts
25
20
  }, "text", true);
26
-
27
21
  this.$rules = {
28
- "start" : [{
29
- include : ["strings", "url", "comments"]
30
- }, {
31
- token: "paren.lparen",
32
- regex: "\\{",
33
- next: "ruleset"
34
- }, {
35
- token: "paren.rparen",
36
- regex: "\\}"
37
- }, {
38
- token: "string",
39
- regex: "@(?!viewport)",
40
- next: "media"
41
- }, {
42
- token: "keyword",
43
- regex: "#[a-z0-9-_]+"
44
- }, {
45
- token: "keyword",
46
- regex: "%"
47
- }, {
48
- token: "variable",
49
- regex: "\\.[a-z0-9-_]+"
50
- }, {
51
- token: "string",
52
- regex: ":[a-z0-9-_]+"
53
- }, {
54
- token : "constant.numeric",
55
- regex : numRe
56
- }, {
57
- token: "constant",
58
- regex: "[a-z0-9-_]+"
59
- }, {
60
- caseInsensitive: true
61
- }],
62
-
22
+ "start": [{
23
+ include: ["strings", "url", "comments"]
24
+ }, {
25
+ token: "paren.lparen",
26
+ regex: "\\{",
27
+ next: "ruleset"
28
+ }, {
29
+ token: "paren.rparen",
30
+ regex: "\\}"
31
+ }, {
32
+ token: "string",
33
+ regex: "@(?!viewport)",
34
+ next: "media"
35
+ }, {
36
+ token: "keyword",
37
+ regex: "#[a-z0-9-_]+"
38
+ }, {
39
+ token: "keyword",
40
+ regex: "%"
41
+ }, {
42
+ token: "variable",
43
+ regex: "\\.[a-z0-9-_]+"
44
+ }, {
45
+ token: "string",
46
+ regex: ":[a-z0-9-_]+"
47
+ }, {
48
+ token: "constant.numeric",
49
+ regex: numRe
50
+ }, {
51
+ token: "constant",
52
+ regex: "[a-z0-9-_]+"
53
+ }, {
54
+ caseInsensitive: true
55
+ }],
63
56
  "media": [{
64
- include : ["strings", "url", "comments"]
65
- }, {
66
- token: "paren.lparen",
67
- regex: "\\{",
68
- next: "start"
69
- }, {
70
- token: "paren.rparen",
71
- regex: "\\}",
72
- next: "start"
73
- }, {
74
- token: "string",
75
- regex: ";",
76
- next: "start"
77
- }, {
78
- token: "keyword",
79
- regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
80
- + "|page|font|keyframes|viewport|counter-style|font-feature-values"
81
- + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
82
- }],
83
-
84
- "comments" : [{
85
- token: "comment", // multi line comment
86
- regex: "\\/\\*",
87
- push: [{
88
- token : "comment",
89
- regex : "\\*\\/",
90
- next : "pop"
57
+ include: ["strings", "url", "comments"]
91
58
  }, {
92
- defaultToken : "comment"
93
- }]
94
- }],
95
-
96
- "ruleset" : [{
97
- regex : "-(webkit|ms|moz|o)-",
98
- token : "text"
99
- }, {
100
- token : "punctuation.operator",
101
- regex : "[:;]"
102
- }, {
103
- token : "paren.rparen",
104
- regex : "\\}",
105
- next : "start"
106
- }, {
107
- include : ["strings", "url", "comments"]
108
- }, {
109
- token : ["constant.numeric", "keyword"],
110
- regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
111
- }, {
112
- token : "constant.numeric",
113
- regex : numRe
114
- }, {
115
- token : "constant.numeric", // hex6 color
116
- regex : "#[a-f0-9]{6}"
117
- }, {
118
- token : "constant.numeric", // hex3 color
119
- regex : "#[a-f0-9]{3}"
120
- }, {
121
- token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
122
- regex : pseudoElements
123
- }, {
124
- token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
125
- regex : pseudoClasses
126
- }, {
127
- include: "url"
128
- }, {
129
- token : keywordMapper,
130
- regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
131
- }, {
132
- caseInsensitive: true
133
- }],
134
-
135
- url: [{
136
- token : "support.function",
137
- regex : "(?:url(:?-prefix)?|domain|regexp)\\(",
138
- push: [{
139
- token : "support.function",
140
- regex : "\\)",
141
- next : "pop"
59
+ token: "paren.lparen",
60
+ regex: "\\{",
61
+ next: "start"
142
62
  }, {
143
- defaultToken: "string"
144
- }]
145
- }],
146
-
147
- strings: [{
148
- token : "string.start",
149
- regex : "'",
150
- push : [{
151
- token : "string.end",
152
- regex : "'|$",
153
- next: "pop"
63
+ token: "paren.rparen",
64
+ regex: "\\}",
65
+ next: "start"
154
66
  }, {
155
- include : "escapes"
67
+ token: "string",
68
+ regex: ";",
69
+ next: "start"
156
70
  }, {
157
- token : "constant.language.escape",
158
- regex : /\\$/,
159
- consumeLineEnd: true
71
+ token: "keyword",
72
+ regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
73
+ + "|page|font|keyframes|viewport|counter-style|font-feature-values"
74
+ + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
75
+ }],
76
+ "comments": [{
77
+ token: "comment",
78
+ regex: "\\/\\*",
79
+ push: [{
80
+ token: "comment",
81
+ regex: "\\*\\/",
82
+ next: "pop"
83
+ }, {
84
+ defaultToken: "comment"
85
+ }]
86
+ }],
87
+ "ruleset": [{
88
+ regex: "-(webkit|ms|moz|o)-",
89
+ token: "text"
160
90
  }, {
161
- defaultToken: "string"
162
- }]
163
- }, {
164
- token : "string.start",
165
- regex : '"',
166
- push : [{
167
- token : "string.end",
168
- regex : '"|$',
169
- next: "pop"
91
+ token: "punctuation.operator",
92
+ regex: "[:;]"
93
+ }, {
94
+ token: "paren.rparen",
95
+ regex: "\\}",
96
+ next: "start"
170
97
  }, {
171
- include : "escapes"
98
+ include: ["strings", "url", "comments"]
172
99
  }, {
173
- token : "constant.language.escape",
174
- regex : /\\$/,
175
- consumeLineEnd: true
100
+ token: ["constant.numeric", "keyword"],
101
+ regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"
176
102
  }, {
177
- defaultToken: "string"
178
- }]
179
- }],
103
+ token: "constant.numeric",
104
+ regex: numRe
105
+ }, {
106
+ token: "constant.numeric",
107
+ regex: "#[a-f0-9]{6}"
108
+ }, {
109
+ token: "constant.numeric",
110
+ regex: "#[a-f0-9]{3}"
111
+ }, {
112
+ token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
113
+ regex: pseudoElements
114
+ }, {
115
+ token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
116
+ regex: pseudoClasses
117
+ }, {
118
+ include: "url"
119
+ }, {
120
+ token: keywordMapper,
121
+ regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
122
+ }, {
123
+ caseInsensitive: true
124
+ }],
125
+ url: [{
126
+ token: "support.function",
127
+ regex: "(?:url(:?-prefix)?|domain|regexp)\\(",
128
+ push: [{
129
+ token: "support.function",
130
+ regex: "\\)",
131
+ next: "pop"
132
+ }, {
133
+ defaultToken: "string"
134
+ }]
135
+ }],
136
+ strings: [{
137
+ token: "string.start",
138
+ regex: "'",
139
+ push: [{
140
+ token: "string.end",
141
+ regex: "'|$",
142
+ next: "pop"
143
+ }, {
144
+ include: "escapes"
145
+ }, {
146
+ token: "constant.language.escape",
147
+ regex: /\\$/,
148
+ consumeLineEnd: true
149
+ }, {
150
+ defaultToken: "string"
151
+ }]
152
+ }, {
153
+ token: "string.start",
154
+ regex: '"',
155
+ push: [{
156
+ token: "string.end",
157
+ regex: '"|$',
158
+ next: "pop"
159
+ }, {
160
+ include: "escapes"
161
+ }, {
162
+ token: "constant.language.escape",
163
+ regex: /\\$/,
164
+ consumeLineEnd: true
165
+ }, {
166
+ defaultToken: "string"
167
+ }]
168
+ }],
180
169
  escapes: [{
181
- token : "constant.language.escape",
182
- regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
183
- }]
184
-
170
+ token: "constant.language.escape",
171
+ regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
172
+ }]
185
173
  };
186
-
187
174
  this.normalizeRules();
188
175
  };
189
-
190
176
  oop.inherits(CssHighlightRules, TextHighlightRules);
191
-
192
177
  exports.CssHighlightRules = CssHighlightRules;
193
178
 
194
179
  });
195
180
 
196
- ace.define("ace/mode/doc_comment_highlight_rules",[], function(require, exports, module) {
197
- "use strict";
198
-
181
+ ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
199
182
  var oop = require("../lib/oop");
200
183
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
201
-
202
- var DocCommentHighlightRules = function() {
184
+ var JsDocCommentHighlightRules = function () {
203
185
  this.$rules = {
204
- "start" : [ {
205
- token : "comment.doc.tag",
206
- regex : "@[\\w\\d_]+" // TODO: fix email addresses
207
- },
208
- DocCommentHighlightRules.getTagRule(),
209
- {
210
- defaultToken : "comment.doc",
211
- caseInsensitive: true
212
- }]
186
+ "start": [
187
+ {
188
+ token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"],
189
+ regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",
190
+ push: [
191
+ {
192
+ token: "lparen.doc",
193
+ regex: "{",
194
+ push: [
195
+ {
196
+ include: "doc-syntax"
197
+ }, {
198
+ token: "rparen.doc",
199
+ regex: "}|(?=$)",
200
+ next: "pop"
201
+ }
202
+ ]
203
+ }, {
204
+ token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"],
205
+ regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/,
206
+ next: "pop"
207
+ }, {
208
+ token: "rparen.doc",
209
+ regex: "}|(?=$)",
210
+ next: "pop"
211
+ }, {
212
+ include: "doc-syntax"
213
+ }, {
214
+ defaultToken: "text.doc"
215
+ }
216
+ ]
217
+ }, {
218
+ token: ["comment.doc.tag", "text.doc", "lparen.doc"],
219
+ regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|"
220
+ + "implements|external|exception|throws|enum|define|extends))(\\s*)({)",
221
+ push: [
222
+ {
223
+ token: "lparen.doc",
224
+ regex: "{",
225
+ push: [
226
+ {
227
+ include: "doc-syntax"
228
+ }, {
229
+ token: "rparen.doc",
230
+ regex: "}|(?=$)",
231
+ next: "pop"
232
+ }
233
+ ]
234
+ }, {
235
+ token: "rparen.doc",
236
+ regex: "}|(?=$)",
237
+ next: "pop"
238
+ }, {
239
+ include: "doc-syntax"
240
+ }, {
241
+ defaultToken: "text.doc"
242
+ }
243
+ ]
244
+ }, {
245
+ token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"],
246
+ regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|"
247
+ + "requires|param|implements|function|extends|typedef|mixes|constructor|var|"
248
+ + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|"
249
+ + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?"
250
+ }, {
251
+ token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"],
252
+ regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)"
253
+ }, {
254
+ token: "comment.doc.tag",
255
+ regex: "@access\\s+(?:private|public|protected)"
256
+ }, {
257
+ token: "comment.doc.tag",
258
+ regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"
259
+ }, {
260
+ token: "comment.doc.tag",
261
+ regex: "@\\w+(?=\\s|$)"
262
+ },
263
+ JsDocCommentHighlightRules.getTagRule(),
264
+ {
265
+ defaultToken: "comment.doc",
266
+ caseInsensitive: true
267
+ }
268
+ ],
269
+ "doc-syntax": [{
270
+ token: "operator.doc",
271
+ regex: /[|:]/
272
+ }, {
273
+ token: "paren.doc",
274
+ regex: /[\[\]]/
275
+ }]
213
276
  };
277
+ this.normalizeRules();
214
278
  };
215
-
216
- oop.inherits(DocCommentHighlightRules, TextHighlightRules);
217
-
218
- DocCommentHighlightRules.getTagRule = function(start) {
279
+ oop.inherits(JsDocCommentHighlightRules, TextHighlightRules);
280
+ JsDocCommentHighlightRules.getTagRule = function (start) {
219
281
  return {
220
- token : "comment.doc.tag.storage.type",
221
- regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
282
+ token: "comment.doc.tag.storage.type",
283
+ regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
222
284
  };
223
285
  };
224
-
225
- DocCommentHighlightRules.getStartRule = function(start) {
286
+ JsDocCommentHighlightRules.getStartRule = function (start) {
226
287
  return {
227
- token : "comment.doc", // doc comment
228
- regex : "\\/\\*(?=\\*)",
229
- next : start
288
+ token: "comment.doc",
289
+ regex: "\\/\\*(?=\\*)",
290
+ next: start
230
291
  };
231
292
  };
232
-
233
- DocCommentHighlightRules.getEndRule = function (start) {
293
+ JsDocCommentHighlightRules.getEndRule = function (start) {
234
294
  return {
235
- token : "comment.doc", // closing comment
236
- regex : "\\*\\/",
237
- next : start
295
+ token: "comment.doc",
296
+ regex: "\\*\\/",
297
+ next: start
238
298
  };
239
299
  };
240
-
241
-
242
- exports.DocCommentHighlightRules = DocCommentHighlightRules;
300
+ exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules;
243
301
 
244
302
  });
245
303
 
246
- ace.define("ace/mode/javascript_highlight_rules",[], function(require, exports, module) {
247
- "use strict";
248
-
304
+ ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
249
305
  var oop = require("../lib/oop");
250
- var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
306
+ var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules;
251
307
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
252
308
  var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
253
-
254
- var JavaScriptHighlightRules = function(options) {
309
+ var JavaScriptHighlightRules = function (options) {
255
310
  var keywordMapper = this.createKeywordMapper({
256
- "variable.language":
257
- "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
258
- "Namespace|QName|XML|XMLList|" + // E4X
259
- "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
260
- "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
261
- "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
262
- "SyntaxError|TypeError|URIError|" +
311
+ "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors
312
+ "Namespace|QName|XML|XMLList|" + // E4X
313
+ "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
314
+ "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
315
+ "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
316
+ "SyntaxError|TypeError|URIError|" +
263
317
  "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
264
- "isNaN|parseFloat|parseInt|" +
265
- "JSON|Math|" + // Other
266
- "this|arguments|prototype|window|document" , // Pseudo
267
- "keyword":
268
- "const|yield|import|get|set|async|await|" +
318
+ "isNaN|parseFloat|parseInt|" +
319
+ "JSON|Math|" + // Other
320
+ "this|arguments|prototype|window|document",
321
+ "keyword": "const|yield|import|get|set|async|await|" +
269
322
  "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
270
323
  "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
271
324
  "__parent__|__count__|escape|unescape|with|__proto__|" +
272
- "class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
273
- "storage.type":
274
- "const|let|var|function",
275
- "constant.language":
276
- "null|Infinity|NaN|undefined",
277
- "support.function":
278
- "alert",
325
+ "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor",
326
+ "storage.type": "const|let|var|function",
327
+ "constant.language": "null|Infinity|NaN|undefined",
328
+ "support.function": "alert",
279
329
  "constant.language.boolean": "true|false"
280
330
  }, "identifier");
281
331
  var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
282
-
283
332
  var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
284
333
  "u[0-9a-fA-F]{4}|" + // unicode
285
334
  "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
@@ -287,143 +336,142 @@ var JavaScriptHighlightRules = function(options) {
287
336
  "3[0-7][0-7]?|" + // oct
288
337
  "[4-7][0-7]?|" + //oct
289
338
  ".)";
290
-
291
339
  this.$rules = {
292
- "no_regex" : [
340
+ "no_regex": [
293
341
  DocCommentHighlightRules.getStartRule("doc-start"),
294
342
  comments("no_regex"),
295
343
  {
296
- token : "string",
297
- regex : "'(?=.)",
298
- next : "qstring"
344
+ token: "string",
345
+ regex: "'(?=.)",
346
+ next: "qstring"
299
347
  }, {
300
- token : "string",
301
- regex : '"(?=.)',
302
- next : "qqstring"
348
+ token: "string",
349
+ regex: '"(?=.)',
350
+ next: "qqstring"
303
351
  }, {
304
- token : "constant.numeric", // hexadecimal, octal and binary
305
- regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
352
+ token: "constant.numeric",
353
+ regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
306
354
  }, {
307
- token : "constant.numeric", // decimal integers and floats
308
- regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
355
+ token: "constant.numeric",
356
+ regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
309
357
  }, {
310
- token : [
358
+ token: [
311
359
  "storage.type", "punctuation.operator", "support.function",
312
- "punctuation.operator", "entity.name.function", "text","keyword.operator"
360
+ "punctuation.operator", "entity.name.function", "text", "keyword.operator"
313
361
  ],
314
- regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
362
+ regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)",
315
363
  next: "function_arguments"
316
364
  }, {
317
- token : [
365
+ token: [
318
366
  "storage.type", "punctuation.operator", "entity.name.function", "text",
319
367
  "keyword.operator", "text", "storage.type", "text", "paren.lparen"
320
368
  ],
321
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
369
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
322
370
  next: "function_arguments"
323
371
  }, {
324
- token : [
372
+ token: [
325
373
  "entity.name.function", "text", "keyword.operator", "text", "storage.type",
326
374
  "text", "paren.lparen"
327
375
  ],
328
- regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
376
+ regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()",
329
377
  next: "function_arguments"
330
378
  }, {
331
- token : [
379
+ token: [
332
380
  "storage.type", "punctuation.operator", "entity.name.function", "text",
333
381
  "keyword.operator", "text",
334
382
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
335
383
  ],
336
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
384
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()",
337
385
  next: "function_arguments"
338
386
  }, {
339
- token : [
387
+ token: [
340
388
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
341
389
  ],
342
- regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
390
+ regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
343
391
  next: "function_arguments"
344
392
  }, {
345
- token : [
393
+ token: [
346
394
  "entity.name.function", "text", "punctuation.operator",
347
395
  "text", "storage.type", "text", "paren.lparen"
348
396
  ],
349
- regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
397
+ regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()",
350
398
  next: "function_arguments"
351
399
  }, {
352
- token : [
400
+ token: [
353
401
  "text", "text", "storage.type", "text", "paren.lparen"
354
402
  ],
355
- regex : "(:)(\\s*)(function)(\\s*)(\\()",
403
+ regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()",
356
404
  next: "function_arguments"
357
405
  }, {
358
- token : "keyword",
359
- regex : "from(?=\\s*('|\"))"
406
+ token: "keyword",
407
+ regex: "from(?=\\s*('|\"))"
360
408
  }, {
361
- token : "keyword",
362
- regex : "(?:" + kwBeforeRe + ")\\b",
363
- next : "start"
409
+ token: "keyword",
410
+ regex: "(?:" + kwBeforeRe + ")\\b",
411
+ next: "start"
364
412
  }, {
365
- token : ["support.constant"],
366
- regex : /that\b/
413
+ token: "support.constant",
414
+ regex: /that\b/
367
415
  }, {
368
- token : ["storage.type", "punctuation.operator", "support.function.firebug"],
369
- regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
416
+ token: ["storage.type", "punctuation.operator", "support.function.firebug"],
417
+ regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
370
418
  }, {
371
- token : keywordMapper,
372
- regex : identifierRe
419
+ token: keywordMapper,
420
+ regex: identifierRe
373
421
  }, {
374
- token : "punctuation.operator",
375
- regex : /[.](?![.])/,
376
- next : "property"
422
+ token: "punctuation.operator",
423
+ regex: /[.](?![.])/,
424
+ next: "property"
377
425
  }, {
378
- token : "storage.type",
379
- regex : /=>/,
380
- next : "start"
426
+ token: "storage.type",
427
+ regex: /=>/,
428
+ next: "start"
381
429
  }, {
382
- token : "keyword.operator",
383
- regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
384
- next : "start"
430
+ token: "keyword.operator",
431
+ regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
432
+ next: "start"
385
433
  }, {
386
- token : "punctuation.operator",
387
- regex : /[?:,;.]/,
388
- next : "start"
434
+ token: "punctuation.operator",
435
+ regex: /[?:,;.]/,
436
+ next: "start"
389
437
  }, {
390
- token : "paren.lparen",
391
- regex : /[\[({]/,
392
- next : "start"
438
+ token: "paren.lparen",
439
+ regex: /[\[({]/,
440
+ next: "start"
393
441
  }, {
394
- token : "paren.rparen",
395
- regex : /[\])}]/
442
+ token: "paren.rparen",
443
+ regex: /[\])}]/
396
444
  }, {
397
445
  token: "comment",
398
446
  regex: /^#!.*$/
399
447
  }
400
448
  ],
401
449
  property: [{
402
- token : "text",
403
- regex : "\\s+"
450
+ token: "text",
451
+ regex: "\\s+"
404
452
  }, {
405
- token : [
453
+ token: [
406
454
  "storage.type", "punctuation.operator", "entity.name.function", "text",
407
455
  "keyword.operator", "text",
408
456
  "storage.type", "text", "entity.name.function", "text", "paren.lparen"
409
457
  ],
410
- regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
458
+ regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",
411
459
  next: "function_arguments"
412
460
  }, {
413
- token : "punctuation.operator",
414
- regex : /[.](?![.])/
461
+ token: "punctuation.operator",
462
+ regex: /[.](?![.])/
415
463
  }, {
416
- token : "support.function",
417
- regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
464
+ token: "support.function",
465
+ regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
418
466
  }, {
419
- token : "support.function.dom",
420
- regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
467
+ token: "support.function.dom",
468
+ regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
421
469
  }, {
422
- token : "support.constant",
423
- regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
470
+ token: "support.constant",
471
+ regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
424
472
  }, {
425
- token : "identifier",
426
- regex : identifierRe
473
+ token: "identifier",
474
+ regex: identifierRe
427
475
  }, {
428
476
  regex: "",
429
477
  token: "empty",
@@ -438,9 +486,9 @@ var JavaScriptHighlightRules = function(options) {
438
486
  regex: "\\/",
439
487
  next: "regex"
440
488
  }, {
441
- token : "text",
442
- regex : "\\s+|^$",
443
- next : "start"
489
+ token: "text",
490
+ regex: "\\s+|^$",
491
+ next: "start"
444
492
  }, {
445
493
  token: "empty",
446
494
  regex: "",
@@ -456,13 +504,13 @@ var JavaScriptHighlightRules = function(options) {
456
504
  regex: "/[sxngimy]*",
457
505
  next: "no_regex"
458
506
  }, {
459
- token : "invalid",
507
+ token: "invalid",
460
508
  regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
461
509
  }, {
462
- token : "constant.language.escape",
510
+ token: "constant.language.escape",
463
511
  regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
464
512
  }, {
465
- token : "constant.language.delimiter",
513
+ token: "constant.language.delimiter",
466
514
  regex: /\|/
467
515
  }, {
468
516
  token: "constant.language.escape",
@@ -495,13 +543,67 @@ var JavaScriptHighlightRules = function(options) {
495
543
  defaultToken: "string.regexp.charachterclass"
496
544
  }
497
545
  ],
546
+ "default_parameter": [
547
+ {
548
+ token: "string",
549
+ regex: "'(?=.)",
550
+ push: [
551
+ {
552
+ token: "string",
553
+ regex: "'|$",
554
+ next: "pop"
555
+ }, {
556
+ include: "qstring"
557
+ }
558
+ ]
559
+ }, {
560
+ token: "string",
561
+ regex: '"(?=.)',
562
+ push: [
563
+ {
564
+ token: "string",
565
+ regex: '"|$',
566
+ next: "pop"
567
+ }, {
568
+ include: "qqstring"
569
+ }
570
+ ]
571
+ }, {
572
+ token: "constant.language",
573
+ regex: "null|Infinity|NaN|undefined"
574
+ }, {
575
+ token: "constant.numeric",
576
+ regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
577
+ }, {
578
+ token: "constant.numeric",
579
+ regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
580
+ }, {
581
+ token: "punctuation.operator",
582
+ regex: ",",
583
+ next: "function_arguments"
584
+ }, {
585
+ token: "text",
586
+ regex: "\\s+"
587
+ }, {
588
+ token: "punctuation.operator",
589
+ regex: "$"
590
+ }, {
591
+ token: "empty",
592
+ regex: "",
593
+ next: "no_regex"
594
+ }
595
+ ],
498
596
  "function_arguments": [
597
+ comments("function_arguments"),
499
598
  {
500
599
  token: "variable.parameter",
501
600
  regex: identifierRe
502
601
  }, {
503
602
  token: "punctuation.operator",
504
- regex: "[, ]+"
603
+ regex: ","
604
+ }, {
605
+ token: "text",
606
+ regex: "\\s+"
505
607
  }, {
506
608
  token: "punctuation.operator",
507
609
  regex: "$"
@@ -511,44 +613,42 @@ var JavaScriptHighlightRules = function(options) {
511
613
  next: "no_regex"
512
614
  }
513
615
  ],
514
- "qqstring" : [
616
+ "qqstring": [
515
617
  {
516
- token : "constant.language.escape",
517
- regex : escapedRe
618
+ token: "constant.language.escape",
619
+ regex: escapedRe
518
620
  }, {
519
- token : "string",
520
- regex : "\\\\$",
521
- consumeLineEnd : true
621
+ token: "string",
622
+ regex: "\\\\$",
623
+ consumeLineEnd: true
522
624
  }, {
523
- token : "string",
524
- regex : '"|$',
525
- next : "no_regex"
625
+ token: "string",
626
+ regex: '"|$',
627
+ next: "no_regex"
526
628
  }, {
527
629
  defaultToken: "string"
528
630
  }
529
631
  ],
530
- "qstring" : [
632
+ "qstring": [
531
633
  {
532
- token : "constant.language.escape",
533
- regex : escapedRe
634
+ token: "constant.language.escape",
635
+ regex: escapedRe
534
636
  }, {
535
- token : "string",
536
- regex : "\\\\$",
537
- consumeLineEnd : true
637
+ token: "string",
638
+ regex: "\\\\$",
639
+ consumeLineEnd: true
538
640
  }, {
539
- token : "string",
540
- regex : "'|$",
541
- next : "no_regex"
641
+ token: "string",
642
+ regex: "'|$",
643
+ next: "no_regex"
542
644
  }, {
543
645
  defaultToken: "string"
544
646
  }
545
647
  ]
546
648
  };
547
-
548
-
549
649
  if (!options || !options.noES6) {
550
650
  this.$rules.no_regex.unshift({
551
- regex: "[{}]", onMatch: function(val, state, stack) {
651
+ regex: "[{}]", onMatch: function (val, state, stack) {
552
652
  this.next = val == "{" ? this.nextState : "";
553
653
  if (val == "{" && stack.length) {
554
654
  stack.unshift("start", state);
@@ -563,40 +663,60 @@ var JavaScriptHighlightRules = function(options) {
563
663
  },
564
664
  nextState: "start"
565
665
  }, {
566
- token : "string.quasi.start",
567
- regex : /`/,
568
- push : [{
569
- token : "constant.language.escape",
570
- regex : escapedRe
571
- }, {
572
- token : "paren.quasi.start",
573
- regex : /\${/,
574
- push : "start"
575
- }, {
576
- token : "string.quasi.end",
577
- regex : /`/,
578
- next : "pop"
579
- }, {
580
- defaultToken: "string.quasi"
581
- }]
666
+ token: "string.quasi.start",
667
+ regex: /`/,
668
+ push: [{
669
+ token: "constant.language.escape",
670
+ regex: escapedRe
671
+ }, {
672
+ token: "paren.quasi.start",
673
+ regex: /\${/,
674
+ push: "start"
675
+ }, {
676
+ token: "string.quasi.end",
677
+ regex: /`/,
678
+ next: "pop"
679
+ }, {
680
+ defaultToken: "string.quasi"
681
+ }]
682
+ }, {
683
+ token: ["variable.parameter", "text"],
684
+ regex: "(" + identifierRe + ")(\\s*)(?=\\=>)"
685
+ }, {
686
+ token: "paren.lparen",
687
+ regex: "(\\()(?=.+\\s*=>)",
688
+ next: "function_arguments"
689
+ }, {
690
+ token: "variable.language",
691
+ regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"
692
+ });
693
+ this.$rules["function_arguments"].unshift({
694
+ token: "keyword.operator",
695
+ regex: "=",
696
+ next: "default_parameter"
697
+ }, {
698
+ token: "keyword.operator",
699
+ regex: "\\.{3}"
700
+ });
701
+ this.$rules["property"].unshift({
702
+ token: "support.function",
703
+ regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|"
704
+ + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"
705
+ }, {
706
+ token: "constant.language",
707
+ regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"
582
708
  });
583
-
584
709
  if (!options || options.jsx != false)
585
710
  JSX.call(this);
586
711
  }
587
-
588
- this.embedRules(DocCommentHighlightRules, "doc-",
589
- [ DocCommentHighlightRules.getEndRule("no_regex") ]);
590
-
712
+ this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]);
591
713
  this.normalizeRules();
592
714
  };
593
-
594
715
  oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
595
-
596
716
  function JSX() {
597
717
  var tagRegex = identifierRe.replace("\\d", "\\d\\-");
598
718
  var jsxTag = {
599
- onMatch : function(val, state, stack) {
719
+ onMatch: function (val, state, stack) {
600
720
  var offset = val.charAt(1) == "/" ? 2 : 1;
601
721
  if (offset == 1) {
602
722
  if (state != this.nextState)
@@ -604,7 +724,8 @@ function JSX() {
604
724
  else
605
725
  stack.unshift(this.next);
606
726
  stack[2]++;
607
- } else if (offset == 2) {
727
+ }
728
+ else if (offset == 2) {
608
729
  if (state == this.nextState) {
609
730
  stack[1]--;
610
731
  if (!stack[1] || stack[1] < 0) {
@@ -614,14 +735,14 @@ function JSX() {
614
735
  }
615
736
  }
616
737
  return [{
617
- type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
618
- value: val.slice(0, offset)
619
- }, {
620
- type: "meta.tag.tag-name.xml",
621
- value: val.substr(offset)
622
- }];
738
+ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
739
+ value: val.slice(0, offset)
740
+ }, {
741
+ type: "meta.tag.tag-name.xml",
742
+ value: val.substr(offset)
743
+ }];
623
744
  },
624
- regex : "</?" + tagRegex + "",
745
+ regex: "</?" + tagRegex + "",
625
746
  next: "jsxAttributes",
626
747
  nextState: "jsx"
627
748
  };
@@ -634,497 +755,431 @@ function JSX() {
634
755
  this.$rules.jsx = [
635
756
  jsxJsRule,
636
757
  jsxTag,
637
- {include : "reference"},
638
- {defaultToken: "string"}
758
+ { include: "reference" },
759
+ { defaultToken: "string" }
639
760
  ];
640
761
  this.$rules.jsxAttributes = [{
641
- token : "meta.tag.punctuation.tag-close.xml",
642
- regex : "/?>",
643
- onMatch : function(value, currentState, stack) {
644
- if (currentState == stack[0])
645
- stack.shift();
646
- if (value.length == 2) {
647
- if (stack[0] == this.nextState)
648
- stack[1]--;
649
- if (!stack[1] || stack[1] < 0) {
650
- stack.splice(0, 2);
762
+ token: "meta.tag.punctuation.tag-close.xml",
763
+ regex: "/?>",
764
+ onMatch: function (value, currentState, stack) {
765
+ if (currentState == stack[0])
766
+ stack.shift();
767
+ if (value.length == 2) {
768
+ if (stack[0] == this.nextState)
769
+ stack[1]--;
770
+ if (!stack[1] || stack[1] < 0) {
771
+ stack.splice(0, 2);
772
+ }
651
773
  }
652
- }
653
- this.next = stack[0] || "start";
654
- return [{type: this.token, value: value}];
774
+ this.next = stack[0] || "start";
775
+ return [{ type: this.token, value: value }];
776
+ },
777
+ nextState: "jsx"
655
778
  },
656
- nextState: "jsx"
657
- },
658
- jsxJsRule,
659
- comments("jsxAttributes"),
660
- {
661
- token : "entity.other.attribute-name.xml",
662
- regex : tagRegex
663
- }, {
664
- token : "keyword.operator.attribute-equals.xml",
665
- regex : "="
666
- }, {
667
- token : "text.tag-whitespace.xml",
668
- regex : "\\s+"
669
- }, {
670
- token : "string.attribute-value.xml",
671
- regex : "'",
672
- stateName : "jsx_attr_q",
673
- push : [
674
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
675
- {include : "reference"},
676
- {defaultToken : "string.attribute-value.xml"}
677
- ]
678
- }, {
679
- token : "string.attribute-value.xml",
680
- regex : '"',
681
- stateName : "jsx_attr_qq",
682
- push : [
683
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
684
- {include : "reference"},
685
- {defaultToken : "string.attribute-value.xml"}
686
- ]
687
- },
688
- jsxTag
779
+ jsxJsRule,
780
+ comments("jsxAttributes"),
781
+ {
782
+ token: "entity.other.attribute-name.xml",
783
+ regex: tagRegex
784
+ }, {
785
+ token: "keyword.operator.attribute-equals.xml",
786
+ regex: "="
787
+ }, {
788
+ token: "text.tag-whitespace.xml",
789
+ regex: "\\s+"
790
+ }, {
791
+ token: "string.attribute-value.xml",
792
+ regex: "'",
793
+ stateName: "jsx_attr_q",
794
+ push: [
795
+ { token: "string.attribute-value.xml", regex: "'", next: "pop" },
796
+ { include: "reference" },
797
+ { defaultToken: "string.attribute-value.xml" }
798
+ ]
799
+ }, {
800
+ token: "string.attribute-value.xml",
801
+ regex: '"',
802
+ stateName: "jsx_attr_qq",
803
+ push: [
804
+ { token: "string.attribute-value.xml", regex: '"', next: "pop" },
805
+ { include: "reference" },
806
+ { defaultToken: "string.attribute-value.xml" }
807
+ ]
808
+ },
809
+ jsxTag
689
810
  ];
690
811
  this.$rules.reference = [{
691
- token : "constant.language.escape.reference.xml",
692
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
693
- }];
812
+ token: "constant.language.escape.reference.xml",
813
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
814
+ }];
694
815
  }
695
-
696
816
  function comments(next) {
697
817
  return [
698
818
  {
699
- token : "comment", // multi line comment
700
- regex : /\/\*/,
819
+ token: "comment",
820
+ regex: /\/\*/,
701
821
  next: [
702
822
  DocCommentHighlightRules.getTagRule(),
703
- {token : "comment", regex : "\\*\\/", next : next || "pop"},
704
- {defaultToken : "comment", caseInsensitive: true}
823
+ { token: "comment", regex: "\\*\\/", next: next || "pop" },
824
+ { defaultToken: "comment", caseInsensitive: true }
705
825
  ]
706
826
  }, {
707
- token : "comment",
708
- regex : "\\/\\/",
827
+ token: "comment",
828
+ regex: "\\/\\/",
709
829
  next: [
710
830
  DocCommentHighlightRules.getTagRule(),
711
- {token : "comment", regex : "$|^", next : next || "pop"},
712
- {defaultToken : "comment", caseInsensitive: true}
831
+ { token: "comment", regex: "$|^", next: next || "pop" },
832
+ { defaultToken: "comment", caseInsensitive: true }
713
833
  ]
714
834
  }
715
835
  ];
716
836
  }
717
837
  exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
718
- });
719
838
 
720
- ace.define("ace/mode/xml_highlight_rules",[], function(require, exports, module) {
721
- "use strict";
839
+ });
722
840
 
841
+ ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
723
842
  var oop = require("../lib/oop");
724
843
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
725
-
726
- var XmlHighlightRules = function(normalize) {
844
+ var XmlHighlightRules = function (normalize) {
727
845
  var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
728
-
729
846
  this.$rules = {
730
- start : [
731
- {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"},
847
+ start: [
848
+ { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" },
732
849
  {
733
- token : ["punctuation.instruction.xml", "keyword.instruction.xml"],
734
- regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction"
850
+ token: ["punctuation.instruction.xml", "keyword.instruction.xml"],
851
+ regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction"
735
852
  },
736
- {token : "comment.start.xml", regex : "<\\!--", next : "comment"},
853
+ { token: "comment.start.xml", regex: "<\\!--", next: "comment" },
737
854
  {
738
- token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
739
- regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true
855
+ token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
856
+ regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true
740
857
  },
741
- {include : "tag"},
742
- {token : "text.end-tag-open.xml", regex: "</"},
743
- {token : "text.tag-open.xml", regex: "<"},
744
- {include : "reference"},
745
- {defaultToken : "text.xml"}
858
+ { include: "tag" },
859
+ { token: "text.end-tag-open.xml", regex: "</" },
860
+ { token: "text.tag-open.xml", regex: "<" },
861
+ { include: "reference" },
862
+ { defaultToken: "text.xml" }
746
863
  ],
747
-
748
- processing_instruction : [{
749
- token : "entity.other.attribute-name.decl-attribute-name.xml",
750
- regex : tagRegex
751
- }, {
752
- token : "keyword.operator.decl-attribute-equals.xml",
753
- regex : "="
754
- }, {
755
- include: "whitespace"
756
- }, {
757
- include: "string"
758
- }, {
759
- token : "punctuation.xml-decl.xml",
760
- regex : "\\?>",
761
- next : "start"
762
- }],
763
-
764
- doctype : [
765
- {include : "whitespace"},
766
- {include : "string"},
767
- {token : "xml-pe.doctype.xml", regex : ">", next : "start"},
768
- {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"},
769
- {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"}
864
+ processing_instruction: [{
865
+ token: "entity.other.attribute-name.decl-attribute-name.xml",
866
+ regex: tagRegex
867
+ }, {
868
+ token: "keyword.operator.decl-attribute-equals.xml",
869
+ regex: "="
870
+ }, {
871
+ include: "whitespace"
872
+ }, {
873
+ include: "string"
874
+ }, {
875
+ token: "punctuation.xml-decl.xml",
876
+ regex: "\\?>",
877
+ next: "start"
878
+ }],
879
+ doctype: [
880
+ { include: "whitespace" },
881
+ { include: "string" },
882
+ { token: "xml-pe.doctype.xml", regex: ">", next: "start" },
883
+ { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" },
884
+ { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" }
770
885
  ],
771
-
772
- int_subset : [{
773
- token : "text.xml",
774
- regex : "\\s+"
775
- }, {
776
- token: "punctuation.int-subset.xml",
777
- regex: "]",
778
- next: "pop"
779
- }, {
780
- token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
781
- regex : "(<\\!)(" + tagRegex + ")",
782
- push : [{
783
- token : "text",
784
- regex : "\\s+"
785
- },
786
- {
787
- token : "punctuation.markup-decl.xml",
788
- regex : ">",
789
- next : "pop"
790
- },
791
- {include : "string"}]
792
- }],
793
-
794
- cdata : [
795
- {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"},
796
- {token : "text.xml", regex : "\\s+"},
797
- {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"}
886
+ int_subset: [{
887
+ token: "text.xml",
888
+ regex: "\\s+"
889
+ }, {
890
+ token: "punctuation.int-subset.xml",
891
+ regex: "]",
892
+ next: "pop"
893
+ }, {
894
+ token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
895
+ regex: "(<\\!)(" + tagRegex + ")",
896
+ push: [{
897
+ token: "text",
898
+ regex: "\\s+"
899
+ },
900
+ {
901
+ token: "punctuation.markup-decl.xml",
902
+ regex: ">",
903
+ next: "pop"
904
+ },
905
+ { include: "string" }]
906
+ }],
907
+ cdata: [
908
+ { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" },
909
+ { token: "text.xml", regex: "\\s+" },
910
+ { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" }
798
911
  ],
799
-
800
- comment : [
801
- {token : "comment.end.xml", regex : "-->", next : "start"},
802
- {defaultToken : "comment.xml"}
912
+ comment: [
913
+ { token: "comment.end.xml", regex: "-->", next: "start" },
914
+ { defaultToken: "comment.xml" }
803
915
  ],
804
-
805
- reference : [{
806
- token : "constant.language.escape.reference.xml",
807
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
808
- }],
809
-
810
- attr_reference : [{
811
- token : "constant.language.escape.reference.attribute-value.xml",
812
- regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
813
- }],
814
-
815
- tag : [{
816
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
817
- regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
818
- next: [
819
- {include : "attributes"},
820
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
821
- ]
822
- }],
823
-
824
- tag_whitespace : [
825
- {token : "text.tag-whitespace.xml", regex : "\\s+"}
916
+ reference: [{
917
+ token: "constant.language.escape.reference.xml",
918
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
919
+ }],
920
+ attr_reference: [{
921
+ token: "constant.language.escape.reference.attribute-value.xml",
922
+ regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
923
+ }],
924
+ tag: [{
925
+ token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
926
+ regex: "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
927
+ next: [
928
+ { include: "attributes" },
929
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" }
930
+ ]
931
+ }],
932
+ tag_whitespace: [
933
+ { token: "text.tag-whitespace.xml", regex: "\\s+" }
826
934
  ],
827
- whitespace : [
828
- {token : "text.whitespace.xml", regex : "\\s+"}
935
+ whitespace: [
936
+ { token: "text.whitespace.xml", regex: "\\s+" }
829
937
  ],
830
938
  string: [{
831
- token : "string.xml",
832
- regex : "'",
833
- push : [
834
- {token : "string.xml", regex: "'", next: "pop"},
835
- {defaultToken : "string.xml"}
836
- ]
837
- }, {
838
- token : "string.xml",
839
- regex : '"',
840
- push : [
841
- {token : "string.xml", regex: '"', next: "pop"},
842
- {defaultToken : "string.xml"}
843
- ]
844
- }],
845
-
939
+ token: "string.xml",
940
+ regex: "'",
941
+ push: [
942
+ { token: "string.xml", regex: "'", next: "pop" },
943
+ { defaultToken: "string.xml" }
944
+ ]
945
+ }, {
946
+ token: "string.xml",
947
+ regex: '"',
948
+ push: [
949
+ { token: "string.xml", regex: '"', next: "pop" },
950
+ { defaultToken: "string.xml" }
951
+ ]
952
+ }],
846
953
  attributes: [{
847
- token : "entity.other.attribute-name.xml",
848
- regex : tagRegex
849
- }, {
850
- token : "keyword.operator.attribute-equals.xml",
851
- regex : "="
852
- }, {
853
- include: "tag_whitespace"
854
- }, {
855
- include: "attribute_value"
856
- }],
857
-
954
+ token: "entity.other.attribute-name.xml",
955
+ regex: tagRegex
956
+ }, {
957
+ token: "keyword.operator.attribute-equals.xml",
958
+ regex: "="
959
+ }, {
960
+ include: "tag_whitespace"
961
+ }, {
962
+ include: "attribute_value"
963
+ }],
858
964
  attribute_value: [{
859
- token : "string.attribute-value.xml",
860
- regex : "'",
861
- push : [
862
- {token : "string.attribute-value.xml", regex: "'", next: "pop"},
863
- {include : "attr_reference"},
864
- {defaultToken : "string.attribute-value.xml"}
865
- ]
866
- }, {
867
- token : "string.attribute-value.xml",
868
- regex : '"',
869
- push : [
870
- {token : "string.attribute-value.xml", regex: '"', next: "pop"},
871
- {include : "attr_reference"},
872
- {defaultToken : "string.attribute-value.xml"}
873
- ]
874
- }]
965
+ token: "string.attribute-value.xml",
966
+ regex: "'",
967
+ push: [
968
+ { token: "string.attribute-value.xml", regex: "'", next: "pop" },
969
+ { include: "attr_reference" },
970
+ { defaultToken: "string.attribute-value.xml" }
971
+ ]
972
+ }, {
973
+ token: "string.attribute-value.xml",
974
+ regex: '"',
975
+ push: [
976
+ { token: "string.attribute-value.xml", regex: '"', next: "pop" },
977
+ { include: "attr_reference" },
978
+ { defaultToken: "string.attribute-value.xml" }
979
+ ]
980
+ }]
875
981
  };
876
-
877
982
  if (this.constructor === XmlHighlightRules)
878
983
  this.normalizeRules();
879
984
  };
880
-
881
-
882
- (function() {
883
-
884
- this.embedTagRules = function(HighlightRules, prefix, tag){
985
+ (function () {
986
+ this.embedTagRules = function (HighlightRules, prefix, tag) {
885
987
  this.$rules.tag.unshift({
886
- token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
887
- regex : "(<)(" + tag + "(?=\\s|>|$))",
988
+ token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
989
+ regex: "(<)(" + tag + "(?=\\s|>|$))",
888
990
  next: [
889
- {include : "attributes"},
890
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"}
991
+ { include: "attributes" },
992
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" }
891
993
  ]
892
994
  });
893
-
894
995
  this.$rules[tag + "-end"] = [
895
- {include : "attributes"},
896
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start",
897
- onMatch : function(value, currentState, stack) {
996
+ { include: "attributes" },
997
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start",
998
+ onMatch: function (value, currentState, stack) {
898
999
  stack.splice(0);
899
1000
  return this.token;
900
- }}
1001
+ } }
901
1002
  ];
902
-
903
1003
  this.embedRules(HighlightRules, prefix, [{
904
- token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
905
- regex : "(</)(" + tag + "(?=\\s|>|$))",
906
- next: tag + "-end"
907
- }, {
908
- token: "string.cdata.xml",
909
- regex : "<\\!\\[CDATA\\["
910
- }, {
911
- token: "string.cdata.xml",
912
- regex : "\\]\\]>"
913
- }]);
1004
+ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
1005
+ regex: "(</)(" + tag + "(?=\\s|>|$))",
1006
+ next: tag + "-end"
1007
+ }, {
1008
+ token: "string.cdata.xml",
1009
+ regex: "<\\!\\[CDATA\\["
1010
+ }, {
1011
+ token: "string.cdata.xml",
1012
+ regex: "\\]\\]>"
1013
+ }]);
914
1014
  };
915
-
916
1015
  }).call(TextHighlightRules.prototype);
917
-
918
1016
  oop.inherits(XmlHighlightRules, TextHighlightRules);
919
-
920
1017
  exports.XmlHighlightRules = XmlHighlightRules;
921
- });
922
1018
 
923
- ace.define("ace/mode/html_highlight_rules",[], function(require, exports, module) {
924
- "use strict";
1019
+ });
925
1020
 
1021
+ ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict";
926
1022
  var oop = require("../lib/oop");
927
1023
  var lang = require("../lib/lang");
928
1024
  var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
929
1025
  var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
930
1026
  var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
931
-
932
1027
  var tagMap = lang.createMap({
933
- a : 'anchor',
934
- button : 'form',
935
- form : 'form',
936
- img : 'image',
937
- input : 'form',
938
- label : 'form',
939
- option : 'form',
940
- script : 'script',
941
- select : 'form',
942
- textarea : 'form',
943
- style : 'style',
944
- table : 'table',
945
- tbody : 'table',
946
- td : 'table',
947
- tfoot : 'table',
948
- th : 'table',
949
- tr : 'table'
1028
+ a: 'anchor',
1029
+ button: 'form',
1030
+ form: 'form',
1031
+ img: 'image',
1032
+ input: 'form',
1033
+ label: 'form',
1034
+ option: 'form',
1035
+ script: 'script',
1036
+ select: 'form',
1037
+ textarea: 'form',
1038
+ style: 'style',
1039
+ table: 'table',
1040
+ tbody: 'table',
1041
+ td: 'table',
1042
+ tfoot: 'table',
1043
+ th: 'table',
1044
+ tr: 'table'
950
1045
  });
951
-
952
- var HtmlHighlightRules = function() {
1046
+ var HtmlHighlightRules = function () {
953
1047
  XmlHighlightRules.call(this);
954
-
955
1048
  this.addRules({
956
1049
  attributes: [{
957
- include : "tag_whitespace"
958
- }, {
959
- token : "entity.other.attribute-name.xml",
960
- regex : "[-_a-zA-Z0-9:.]+"
961
- }, {
962
- token : "keyword.operator.attribute-equals.xml",
963
- regex : "=",
964
- push : [{
965
1050
  include: "tag_whitespace"
966
1051
  }, {
967
- token : "string.unquoted.attribute-value.html",
968
- regex : "[^<>='\"`\\s]+",
969
- next : "pop"
1052
+ token: "entity.other.attribute-name.xml",
1053
+ regex: "[-_a-zA-Z0-9:.]+"
970
1054
  }, {
971
- token : "empty",
972
- regex : "",
973
- next : "pop"
974
- }]
975
- }, {
976
- include : "attribute_value"
977
- }],
1055
+ token: "keyword.operator.attribute-equals.xml",
1056
+ regex: "=",
1057
+ push: [{
1058
+ include: "tag_whitespace"
1059
+ }, {
1060
+ token: "string.unquoted.attribute-value.html",
1061
+ regex: "[^<>='\"`\\s]+",
1062
+ next: "pop"
1063
+ }, {
1064
+ token: "empty",
1065
+ regex: "",
1066
+ next: "pop"
1067
+ }]
1068
+ }, {
1069
+ include: "attribute_value"
1070
+ }],
978
1071
  tag: [{
979
- token : function(start, tag) {
980
- var group = tagMap[tag];
981
- return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
982
- "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
983
- },
984
- regex : "(</?)([-_a-zA-Z0-9:.]+)",
985
- next: "tag_stuff"
986
- }],
1072
+ token: function (start, tag) {
1073
+ var group = tagMap[tag];
1074
+ return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
1075
+ "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
1076
+ },
1077
+ regex: "(</?)([-_a-zA-Z0-9:.]+)",
1078
+ next: "tag_stuff"
1079
+ }],
987
1080
  tag_stuff: [
988
- {include : "attributes"},
989
- {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
1081
+ { include: "attributes" },
1082
+ { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" }
990
1083
  ]
991
1084
  });
992
-
993
1085
  this.embedTagRules(CssHighlightRules, "css-", "style");
994
- this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script");
995
-
1086
+ this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script");
996
1087
  if (this.constructor === HtmlHighlightRules)
997
1088
  this.normalizeRules();
998
1089
  };
999
-
1000
1090
  oop.inherits(HtmlHighlightRules, XmlHighlightRules);
1001
-
1002
1091
  exports.HtmlHighlightRules = HtmlHighlightRules;
1003
- });
1004
1092
 
1005
- ace.define("ace/mode/matching_brace_outdent",[], function(require, exports, module) {
1006
- "use strict";
1093
+ });
1007
1094
 
1095
+ ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict";
1008
1096
  var Range = require("../range").Range;
1009
-
1010
- var MatchingBraceOutdent = function() {};
1011
-
1012
- (function() {
1013
-
1014
- this.checkOutdent = function(line, input) {
1015
- if (! /^\s+$/.test(line))
1097
+ var MatchingBraceOutdent = function () { };
1098
+ (function () {
1099
+ this.checkOutdent = function (line, input) {
1100
+ if (!/^\s+$/.test(line))
1016
1101
  return false;
1017
-
1018
1102
  return /^\s*\}/.test(input);
1019
1103
  };
1020
-
1021
- this.autoOutdent = function(doc, row) {
1104
+ this.autoOutdent = function (doc, row) {
1022
1105
  var line = doc.getLine(row);
1023
1106
  var match = line.match(/^(\s*\})/);
1024
-
1025
- if (!match) return 0;
1026
-
1107
+ if (!match)
1108
+ return 0;
1027
1109
  var column = match[1].length;
1028
- var openBracePos = doc.findMatchingBracket({row: row, column: column});
1029
-
1030
- if (!openBracePos || openBracePos.row == row) return 0;
1031
-
1110
+ var openBracePos = doc.findMatchingBracket({ row: row, column: column });
1111
+ if (!openBracePos || openBracePos.row == row)
1112
+ return 0;
1032
1113
  var indent = this.$getIndent(doc.getLine(openBracePos.row));
1033
- doc.replace(new Range(row, 0, row, column-1), indent);
1114
+ doc.replace(new Range(row, 0, row, column - 1), indent);
1034
1115
  };
1035
-
1036
- this.$getIndent = function(line) {
1116
+ this.$getIndent = function (line) {
1037
1117
  return line.match(/^\s*/)[0];
1038
1118
  };
1039
-
1040
1119
  }).call(MatchingBraceOutdent.prototype);
1041
-
1042
1120
  exports.MatchingBraceOutdent = MatchingBraceOutdent;
1043
- });
1044
1121
 
1045
- ace.define("ace/mode/folding/cstyle",[], function(require, exports, module) {
1046
- "use strict";
1122
+ });
1047
1123
 
1124
+ ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
1048
1125
  var oop = require("../../lib/oop");
1049
1126
  var Range = require("../../range").Range;
1050
1127
  var BaseFoldMode = require("./fold_mode").FoldMode;
1051
-
1052
- var FoldMode = exports.FoldMode = function(commentRegex) {
1128
+ var FoldMode = exports.FoldMode = function (commentRegex) {
1053
1129
  if (commentRegex) {
1054
- this.foldingStartMarker = new RegExp(
1055
- this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
1056
- );
1057
- this.foldingStopMarker = new RegExp(
1058
- this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
1059
- );
1130
+ this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
1131
+ this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
1060
1132
  }
1061
1133
  };
1062
1134
  oop.inherits(FoldMode, BaseFoldMode);
1063
-
1064
- (function() {
1065
-
1135
+ (function () {
1066
1136
  this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
1067
1137
  this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
1068
- this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
1138
+ this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
1069
1139
  this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
1070
1140
  this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
1071
1141
  this._getFoldWidgetBase = this.getFoldWidget;
1072
- this.getFoldWidget = function(session, foldStyle, row) {
1142
+ this.getFoldWidget = function (session, foldStyle, row) {
1073
1143
  var line = session.getLine(row);
1074
-
1075
1144
  if (this.singleLineBlockCommentRe.test(line)) {
1076
1145
  if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
1077
1146
  return "";
1078
1147
  }
1079
-
1080
1148
  var fw = this._getFoldWidgetBase(session, foldStyle, row);
1081
-
1082
1149
  if (!fw && this.startRegionRe.test(line))
1083
1150
  return "start"; // lineCommentRegionStart
1084
-
1085
1151
  return fw;
1086
1152
  };
1087
-
1088
- this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
1153
+ this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
1089
1154
  var line = session.getLine(row);
1090
-
1091
1155
  if (this.startRegionRe.test(line))
1092
1156
  return this.getCommentRegionBlock(session, line, row);
1093
-
1094
1157
  var match = line.match(this.foldingStartMarker);
1095
1158
  if (match) {
1096
1159
  var i = match.index;
1097
-
1098
1160
  if (match[1])
1099
1161
  return this.openingBracketBlock(session, match[1], row, i);
1100
-
1101
1162
  var range = session.getCommentFoldRange(row, i + match[0].length, 1);
1102
-
1103
1163
  if (range && !range.isMultiLine()) {
1104
1164
  if (forceMultiline) {
1105
1165
  range = this.getSectionRange(session, row);
1106
- } else if (foldStyle != "all")
1166
+ }
1167
+ else if (foldStyle != "all")
1107
1168
  range = null;
1108
1169
  }
1109
-
1110
1170
  return range;
1111
1171
  }
1112
-
1113
1172
  if (foldStyle === "markbegin")
1114
1173
  return;
1115
-
1116
1174
  var match = line.match(this.foldingStopMarker);
1117
1175
  if (match) {
1118
1176
  var i = match.index + match[0].length;
1119
-
1120
1177
  if (match[1])
1121
1178
  return this.closingBracketBlock(session, match[1], row, i);
1122
-
1123
1179
  return session.getCommentFoldRange(row, i, -1);
1124
1180
  }
1125
1181
  };
1126
-
1127
- this.getSectionRange = function(session, row) {
1182
+ this.getSectionRange = function (session, row) {
1128
1183
  var line = session.getLine(row);
1129
1184
  var startIndent = line.search(/\S/);
1130
1185
  var startRow = row;
@@ -1137,54 +1192,52 @@ oop.inherits(FoldMode, BaseFoldMode);
1137
1192
  var indent = line.search(/\S/);
1138
1193
  if (indent === -1)
1139
1194
  continue;
1140
- if (startIndent > indent)
1195
+ if (startIndent > indent)
1141
1196
  break;
1142
1197
  var subRange = this.getFoldWidgetRange(session, "all", row);
1143
-
1144
1198
  if (subRange) {
1145
1199
  if (subRange.start.row <= startRow) {
1146
1200
  break;
1147
- } else if (subRange.isMultiLine()) {
1201
+ }
1202
+ else if (subRange.isMultiLine()) {
1148
1203
  row = subRange.end.row;
1149
- } else if (startIndent == indent) {
1204
+ }
1205
+ else if (startIndent == indent) {
1150
1206
  break;
1151
1207
  }
1152
1208
  }
1153
1209
  endRow = row;
1154
1210
  }
1155
-
1156
1211
  return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
1157
1212
  };
1158
- this.getCommentRegionBlock = function(session, line, row) {
1213
+ this.getCommentRegionBlock = function (session, line, row) {
1159
1214
  var startColumn = line.search(/\s*$/);
1160
1215
  var maxRow = session.getLength();
1161
1216
  var startRow = row;
1162
-
1163
1217
  var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
1164
1218
  var depth = 1;
1165
1219
  while (++row < maxRow) {
1166
1220
  line = session.getLine(row);
1167
1221
  var m = re.exec(line);
1168
- if (!m) continue;
1169
- if (m[1]) depth--;
1170
- else depth++;
1171
-
1172
- if (!depth) break;
1222
+ if (!m)
1223
+ continue;
1224
+ if (m[1])
1225
+ depth--;
1226
+ else
1227
+ depth++;
1228
+ if (!depth)
1229
+ break;
1173
1230
  }
1174
-
1175
1231
  var endRow = row;
1176
1232
  if (endRow > startRow) {
1177
1233
  return new Range(startRow, startColumn, endRow, line.length);
1178
1234
  }
1179
1235
  };
1180
-
1181
1236
  }).call(FoldMode.prototype);
1182
1237
 
1183
1238
  });
1184
1239
 
1185
- ace.define("ace/mode/javascript",[], function(require, exports, module) {
1186
- "use strict";
1187
-
1240
+ ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
1188
1241
  var oop = require("../lib/oop");
1189
1242
  var TextMode = require("./text").Mode;
1190
1243
  var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
@@ -1192,39 +1245,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd
1192
1245
  var WorkerClient = require("../worker/worker_client").WorkerClient;
1193
1246
  var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
1194
1247
  var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1195
-
1196
- var Mode = function() {
1248
+ var Mode = function () {
1197
1249
  this.HighlightRules = JavaScriptHighlightRules;
1198
-
1199
1250
  this.$outdent = new MatchingBraceOutdent();
1200
1251
  this.$behaviour = new CstyleBehaviour();
1201
1252
  this.foldingRules = new CStyleFoldMode();
1202
1253
  };
1203
1254
  oop.inherits(Mode, TextMode);
1204
-
1205
- (function() {
1206
-
1255
+ (function () {
1207
1256
  this.lineCommentStart = "//";
1208
- this.blockComment = {start: "/*", end: "*/"};
1209
- this.$quotes = {'"': '"', "'": "'", "`": "`"};
1210
-
1211
- this.getNextLineIndent = function(state, line, tab) {
1257
+ this.blockComment = { start: "/*", end: "*/" };
1258
+ this.$quotes = { '"': '"', "'": "'", "`": "`" };
1259
+ this.$pairQuotesAfter = {
1260
+ "`": /\w/
1261
+ };
1262
+ this.getNextLineIndent = function (state, line, tab) {
1212
1263
  var indent = this.$getIndent(line);
1213
-
1214
1264
  var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
1215
1265
  var tokens = tokenizedLine.tokens;
1216
1266
  var endState = tokenizedLine.state;
1217
-
1218
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1267
+ if (tokens.length && tokens[tokens.length - 1].type == "comment") {
1219
1268
  return indent;
1220
1269
  }
1221
-
1222
1270
  if (state == "start" || state == "no_regex") {
1223
1271
  var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
1224
1272
  if (match) {
1225
1273
  indent += tab;
1226
1274
  }
1227
- } else if (state == "doc-start") {
1275
+ }
1276
+ else if (state == "doc-start") {
1228
1277
  if (endState == "start" || endState == "no_regex") {
1229
1278
  return "";
1230
1279
  }
@@ -1236,109 +1285,98 @@ oop.inherits(Mode, TextMode);
1236
1285
  indent += "* ";
1237
1286
  }
1238
1287
  }
1239
-
1240
1288
  return indent;
1241
1289
  };
1242
-
1243
- this.checkOutdent = function(state, line, input) {
1290
+ this.checkOutdent = function (state, line, input) {
1244
1291
  return this.$outdent.checkOutdent(line, input);
1245
1292
  };
1246
-
1247
- this.autoOutdent = function(state, doc, row) {
1293
+ this.autoOutdent = function (state, doc, row) {
1248
1294
  this.$outdent.autoOutdent(doc, row);
1249
1295
  };
1250
-
1251
- this.createWorker = function(session) {
1296
+ this.createWorker = function (session) {
1252
1297
  var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
1253
1298
  worker.attachToDocument(session.getDocument());
1254
-
1255
- worker.on("annotate", function(results) {
1299
+ worker.on("annotate", function (results) {
1256
1300
  session.setAnnotations(results.data);
1257
1301
  });
1258
-
1259
- worker.on("terminate", function() {
1302
+ worker.on("terminate", function () {
1260
1303
  session.clearAnnotations();
1261
1304
  });
1262
-
1263
1305
  return worker;
1264
1306
  };
1265
-
1266
1307
  this.$id = "ace/mode/javascript";
1267
1308
  this.snippetFileId = "ace/snippets/javascript";
1268
1309
  }).call(Mode.prototype);
1269
-
1270
1310
  exports.Mode = Mode;
1271
- });
1272
1311
 
1273
- ace.define("ace/mode/css_completions",[], function(require, exports, module) {
1274
- "use strict";
1312
+ });
1275
1313
 
1314
+ ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict";
1276
1315
  var propertyMap = {
1277
- "background": {"#$0": 1},
1278
- "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
1279
- "background-image": {"url('/$0')": 1},
1280
- "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
1281
- "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
1282
- "background-attachment": {"scroll": 1, "fixed": 1},
1283
- "background-size": {"cover": 1, "contain": 1},
1284
- "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
1285
- "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
1286
- "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
1287
- "border-color": {"#$0": 1},
1288
- "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
1289
- "border-collapse": {"collapse": 1, "separate": 1},
1290
- "bottom": {"px": 1, "em": 1, "%": 1},
1291
- "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
1292
- "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
1293
- "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1},
1294
- "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
1295
- "empty-cells": {"show": 1, "hide": 1},
1296
- "float": {"left": 1, "right": 1, "none": 1},
1297
- "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1},
1298
- "font-size": {"px": 1, "em": 1, "%": 1},
1299
- "font-weight": {"bold": 1, "normal": 1},
1300
- "font-style": {"italic": 1, "normal": 1},
1301
- "font-variant": {"normal": 1, "small-caps": 1},
1302
- "height": {"px": 1, "em": 1, "%": 1},
1303
- "left": {"px": 1, "em": 1, "%": 1},
1304
- "letter-spacing": {"normal": 1},
1305
- "line-height": {"normal": 1},
1306
- "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1},
1307
- "margin": {"px": 1, "em": 1, "%": 1},
1308
- "margin-right": {"px": 1, "em": 1, "%": 1},
1309
- "margin-left": {"px": 1, "em": 1, "%": 1},
1310
- "margin-top": {"px": 1, "em": 1, "%": 1},
1311
- "margin-bottom": {"px": 1, "em": 1, "%": 1},
1312
- "max-height": {"px": 1, "em": 1, "%": 1},
1313
- "max-width": {"px": 1, "em": 1, "%": 1},
1314
- "min-height": {"px": 1, "em": 1, "%": 1},
1315
- "min-width": {"px": 1, "em": 1, "%": 1},
1316
- "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1317
- "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1318
- "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1319
- "padding": {"px": 1, "em": 1, "%": 1},
1320
- "padding-top": {"px": 1, "em": 1, "%": 1},
1321
- "padding-right": {"px": 1, "em": 1, "%": 1},
1322
- "padding-bottom": {"px": 1, "em": 1, "%": 1},
1323
- "padding-left": {"px": 1, "em": 1, "%": 1},
1324
- "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1325
- "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1326
- "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
1327
- "right": {"px": 1, "em": 1, "%": 1},
1328
- "table-layout": {"fixed": 1, "auto": 1},
1329
- "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
1330
- "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
1331
- "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
1332
- "top": {"px": 1, "em": 1, "%": 1},
1333
- "vertical-align": {"top": 1, "bottom": 1},
1334
- "visibility": {"hidden": 1, "visible": 1},
1335
- "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
1336
- "width": {"px": 1, "em": 1, "%": 1},
1337
- "word-spacing": {"normal": 1},
1338
- "filter": {"alpha(opacity=$0100)": 1},
1339
-
1340
- "text-shadow": {"$02px 2px 2px #777": 1},
1341
- "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
1316
+ "background": { "#$0": 1 },
1317
+ "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 },
1318
+ "background-image": { "url('/$0')": 1 },
1319
+ "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 },
1320
+ "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 },
1321
+ "background-attachment": { "scroll": 1, "fixed": 1 },
1322
+ "background-size": { "cover": 1, "contain": 1 },
1323
+ "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 },
1324
+ "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 },
1325
+ "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 },
1326
+ "border-color": { "#$0": 1 },
1327
+ "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 },
1328
+ "border-collapse": { "collapse": 1, "separate": 1 },
1329
+ "bottom": { "px": 1, "em": 1, "%": 1 },
1330
+ "clear": { "left": 1, "right": 1, "both": 1, "none": 1 },
1331
+ "color": { "#$0": 1, "rgb(#$00,0,0)": 1 },
1332
+ "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 },
1333
+ "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 },
1334
+ "empty-cells": { "show": 1, "hide": 1 },
1335
+ "float": { "left": 1, "right": 1, "none": 1 },
1336
+ "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 },
1337
+ "font-size": { "px": 1, "em": 1, "%": 1 },
1338
+ "font-weight": { "bold": 1, "normal": 1 },
1339
+ "font-style": { "italic": 1, "normal": 1 },
1340
+ "font-variant": { "normal": 1, "small-caps": 1 },
1341
+ "height": { "px": 1, "em": 1, "%": 1 },
1342
+ "left": { "px": 1, "em": 1, "%": 1 },
1343
+ "letter-spacing": { "normal": 1 },
1344
+ "line-height": { "normal": 1 },
1345
+ "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 },
1346
+ "margin": { "px": 1, "em": 1, "%": 1 },
1347
+ "margin-right": { "px": 1, "em": 1, "%": 1 },
1348
+ "margin-left": { "px": 1, "em": 1, "%": 1 },
1349
+ "margin-top": { "px": 1, "em": 1, "%": 1 },
1350
+ "margin-bottom": { "px": 1, "em": 1, "%": 1 },
1351
+ "max-height": { "px": 1, "em": 1, "%": 1 },
1352
+ "max-width": { "px": 1, "em": 1, "%": 1 },
1353
+ "min-height": { "px": 1, "em": 1, "%": 1 },
1354
+ "min-width": { "px": 1, "em": 1, "%": 1 },
1355
+ "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1356
+ "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1357
+ "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 },
1358
+ "padding": { "px": 1, "em": 1, "%": 1 },
1359
+ "padding-top": { "px": 1, "em": 1, "%": 1 },
1360
+ "padding-right": { "px": 1, "em": 1, "%": 1 },
1361
+ "padding-bottom": { "px": 1, "em": 1, "%": 1 },
1362
+ "padding-left": { "px": 1, "em": 1, "%": 1 },
1363
+ "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
1364
+ "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 },
1365
+ "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 },
1366
+ "right": { "px": 1, "em": 1, "%": 1 },
1367
+ "table-layout": { "fixed": 1, "auto": 1 },
1368
+ "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 },
1369
+ "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 },
1370
+ "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 },
1371
+ "top": { "px": 1, "em": 1, "%": 1 },
1372
+ "vertical-align": { "top": 1, "bottom": 1 },
1373
+ "visibility": { "hidden": 1, "visible": 1 },
1374
+ "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 },
1375
+ "width": { "px": 1, "em": 1, "%": 1 },
1376
+ "word-spacing": { "normal": 1 },
1377
+ "filter": { "alpha(opacity=$0100)": 1 },
1378
+ "text-shadow": { "$02px 2px 2px #777": 1 },
1379
+ "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 },
1342
1380
  "-moz-border-radius": 1,
1343
1381
  "-moz-border-radius-topright": 1,
1344
1382
  "-moz-border-radius-bottomright": 1,
@@ -1351,81 +1389,71 @@ var propertyMap = {
1351
1389
  "-webkit-border-bottom-left-radius": 1,
1352
1390
  "-moz-box-shadow": 1,
1353
1391
  "-webkit-box-shadow": 1,
1354
- "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1355
- "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1356
- "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
1392
+ "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
1393
+ "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 },
1394
+ "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }
1357
1395
  };
1358
-
1359
- var CssCompletions = function() {
1360
-
1396
+ var CssCompletions = function () {
1361
1397
  };
1362
-
1363
- (function() {
1364
-
1398
+ (function () {
1365
1399
  this.completionsDefined = false;
1366
-
1367
- this.defineCompletions = function() {
1400
+ this.defineCompletions = function () {
1368
1401
  if (document) {
1369
1402
  var style = document.createElement('c').style;
1370
-
1371
1403
  for (var i in style) {
1372
1404
  if (typeof style[i] !== 'string')
1373
1405
  continue;
1374
-
1375
- var name = i.replace(/[A-Z]/g, function(x) {
1406
+ var name = i.replace(/[A-Z]/g, function (x) {
1376
1407
  return '-' + x.toLowerCase();
1377
1408
  });
1378
-
1379
1409
  if (!propertyMap.hasOwnProperty(name))
1380
1410
  propertyMap[name] = 1;
1381
1411
  }
1382
1412
  }
1383
-
1384
1413
  this.completionsDefined = true;
1385
1414
  };
1386
-
1387
- this.getCompletions = function(state, session, pos, prefix) {
1415
+ this.getCompletions = function (state, session, pos, prefix) {
1388
1416
  if (!this.completionsDefined) {
1389
1417
  this.defineCompletions();
1390
1418
  }
1391
-
1392
- if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") {
1419
+ if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") {
1393
1420
  var line = session.getLine(pos.row).substr(0, pos.column);
1421
+ var inParens = /\([^)]*$/.test(line);
1422
+ if (inParens) {
1423
+ line = line.substr(line.lastIndexOf('(') + 1);
1424
+ }
1394
1425
  if (/:[^;]+$/.test(line)) {
1395
1426
  /([\w\-]+):[^:]*$/.test(line);
1396
-
1397
1427
  return this.getPropertyValueCompletions(state, session, pos, prefix);
1398
- } else {
1399
- return this.getPropertyCompletions(state, session, pos, prefix);
1428
+ }
1429
+ else {
1430
+ return this.getPropertyCompletions(state, session, pos, prefix, inParens);
1400
1431
  }
1401
1432
  }
1402
-
1403
1433
  return [];
1404
1434
  };
1405
-
1406
- this.getPropertyCompletions = function(state, session, pos, prefix) {
1435
+ this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) {
1436
+ skipSemicolon = skipSemicolon || false;
1407
1437
  var properties = Object.keys(propertyMap);
1408
- return properties.map(function(property){
1438
+ return properties.map(function (property) {
1409
1439
  return {
1410
1440
  caption: property,
1411
- snippet: property + ': $0;',
1441
+ snippet: property + ': $0' + (skipSemicolon ? '' : ';'),
1412
1442
  meta: "property",
1413
1443
  score: 1000000
1414
1444
  };
1415
1445
  });
1416
1446
  };
1417
-
1418
- this.getPropertyValueCompletions = function(state, session, pos, prefix) {
1447
+ this.getPropertyValueCompletions = function (state, session, pos, prefix) {
1419
1448
  var line = session.getLine(pos.row).substr(0, pos.column);
1420
1449
  var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
1421
-
1422
1450
  if (!property)
1423
1451
  return [];
1424
1452
  var values = [];
1425
1453
  if (property in propertyMap && typeof propertyMap[property] === "object") {
1426
1454
  values = Object.keys(propertyMap[property]);
1427
1455
  }
1428
- return values.map(function(value){
1456
+ return values.map(function (value) {
1429
1457
  return {
1430
1458
  caption: value,
1431
1459
  snippet: value,
@@ -1434,24 +1462,18 @@ var CssCompletions = function() {
1434
1462
  };
1435
1463
  });
1436
1464
  };
1437
-
1438
1465
  }).call(CssCompletions.prototype);
1439
-
1440
1466
  exports.CssCompletions = CssCompletions;
1441
- });
1442
1467
 
1443
- ace.define("ace/mode/behaviour/css",[], function(require, exports, module) {
1444
- "use strict";
1468
+ });
1445
1469
 
1470
+ ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict";
1446
1471
  var oop = require("../../lib/oop");
1447
1472
  var Behaviour = require("../behaviour").Behaviour;
1448
1473
  var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
1449
1474
  var TokenIterator = require("../../token_iterator").TokenIterator;
1450
-
1451
1475
  var CssBehaviour = function () {
1452
-
1453
1476
  this.inherit(CstyleBehaviour);
1454
-
1455
1477
  this.add("colon", "insertion", function (state, action, editor, session, text) {
1456
1478
  if (text === ':' && editor.selection.isEmpty()) {
1457
1479
  var cursor = editor.getCursorPosition();
@@ -1465,20 +1487,19 @@ var CssBehaviour = function () {
1465
1487
  var rightChar = line.substring(cursor.column, cursor.column + 1);
1466
1488
  if (rightChar === ':') {
1467
1489
  return {
1468
- text: '',
1469
- selection: [1, 1]
1490
+ text: '',
1491
+ selection: [1, 1]
1470
1492
  };
1471
1493
  }
1472
1494
  if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
1473
1495
  return {
1474
- text: ':;',
1475
- selection: [1, 1]
1496
+ text: ':;',
1497
+ selection: [1, 1]
1476
1498
  };
1477
1499
  }
1478
1500
  }
1479
1501
  }
1480
1502
  });
1481
-
1482
1503
  this.add("colon", "deletion", function (state, action, editor, session, range) {
1483
1504
  var selected = session.doc.getTextRange(range);
1484
1505
  if (!range.isMultiLine() && selected === ':') {
@@ -1492,13 +1513,12 @@ var CssBehaviour = function () {
1492
1513
  var line = session.doc.getLine(range.start.row);
1493
1514
  var rightChar = line.substring(range.end.column, range.end.column + 1);
1494
1515
  if (rightChar === ';') {
1495
- range.end.column ++;
1516
+ range.end.column++;
1496
1517
  return range;
1497
1518
  }
1498
1519
  }
1499
1520
  }
1500
1521
  });
1501
-
1502
1522
  this.add("semicolon", "insertion", function (state, action, editor, session, text) {
1503
1523
  if (text === ';' && editor.selection.isEmpty()) {
1504
1524
  var cursor = editor.getCursorPosition();
@@ -1506,18 +1526,16 @@ var CssBehaviour = function () {
1506
1526
  var rightChar = line.substring(cursor.column, cursor.column + 1);
1507
1527
  if (rightChar === ';') {
1508
1528
  return {
1509
- text: '',
1510
- selection: [1, 1]
1529
+ text: '',
1530
+ selection: [1, 1]
1511
1531
  };
1512
1532
  }
1513
1533
  }
1514
1534
  });
1515
-
1516
1535
  this.add("!important", "insertion", function (state, action, editor, session, text) {
1517
1536
  if (text === '!' && editor.selection.isEmpty()) {
1518
1537
  var cursor = editor.getCursorPosition();
1519
1538
  var line = session.doc.getLine(cursor.row);
1520
-
1521
1539
  if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
1522
1540
  return {
1523
1541
  text: '!important',
@@ -1526,16 +1544,13 @@ var CssBehaviour = function () {
1526
1544
  }
1527
1545
  }
1528
1546
  });
1529
-
1530
1547
  };
1531
1548
  oop.inherits(CssBehaviour, CstyleBehaviour);
1532
-
1533
1549
  exports.CssBehaviour = CssBehaviour;
1534
- });
1535
1550
 
1536
- ace.define("ace/mode/css",[], function(require, exports, module) {
1537
- "use strict";
1551
+ });
1538
1552
 
1553
+ ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
1539
1554
  var oop = require("../lib/oop");
1540
1555
  var TextMode = require("./text").Mode;
1541
1556
  var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
@@ -1544,8 +1559,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient;
1544
1559
  var CssCompletions = require("./css_completions").CssCompletions;
1545
1560
  var CssBehaviour = require("./behaviour/css").CssBehaviour;
1546
1561
  var CStyleFoldMode = require("./folding/cstyle").FoldMode;
1547
-
1548
- var Mode = function() {
1562
+ var Mode = function () {
1549
1563
  this.HighlightRules = CssHighlightRules;
1550
1564
  this.$outdent = new MatchingBraceOutdent();
1551
1565
  this.$behaviour = new CssBehaviour();
@@ -1553,76 +1567,57 @@ var Mode = function() {
1553
1567
  this.foldingRules = new CStyleFoldMode();
1554
1568
  };
1555
1569
  oop.inherits(Mode, TextMode);
1556
-
1557
- (function() {
1558
-
1570
+ (function () {
1559
1571
  this.foldingRules = "cStyle";
1560
- this.blockComment = {start: "/*", end: "*/"};
1561
-
1562
- this.getNextLineIndent = function(state, line, tab) {
1572
+ this.blockComment = { start: "/*", end: "*/" };
1573
+ this.getNextLineIndent = function (state, line, tab) {
1563
1574
  var indent = this.$getIndent(line);
1564
1575
  var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
1565
- if (tokens.length && tokens[tokens.length-1].type == "comment") {
1576
+ if (tokens.length && tokens[tokens.length - 1].type == "comment") {
1566
1577
  return indent;
1567
1578
  }
1568
-
1569
1579
  var match = line.match(/^.*\{\s*$/);
1570
1580
  if (match) {
1571
1581
  indent += tab;
1572
1582
  }
1573
-
1574
1583
  return indent;
1575
1584
  };
1576
-
1577
- this.checkOutdent = function(state, line, input) {
1585
+ this.checkOutdent = function (state, line, input) {
1578
1586
  return this.$outdent.checkOutdent(line, input);
1579
1587
  };
1580
-
1581
- this.autoOutdent = function(state, doc, row) {
1588
+ this.autoOutdent = function (state, doc, row) {
1582
1589
  this.$outdent.autoOutdent(doc, row);
1583
1590
  };
1584
-
1585
- this.getCompletions = function(state, session, pos, prefix) {
1591
+ this.getCompletions = function (state, session, pos, prefix) {
1586
1592
  return this.$completer.getCompletions(state, session, pos, prefix);
1587
1593
  };
1588
-
1589
- this.createWorker = function(session) {
1594
+ this.createWorker = function (session) {
1590
1595
  var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
1591
1596
  worker.attachToDocument(session.getDocument());
1592
-
1593
- worker.on("annotate", function(e) {
1597
+ worker.on("annotate", function (e) {
1594
1598
  session.setAnnotations(e.data);
1595
1599
  });
1596
-
1597
- worker.on("terminate", function() {
1600
+ worker.on("terminate", function () {
1598
1601
  session.clearAnnotations();
1599
1602
  });
1600
-
1601
1603
  return worker;
1602
1604
  };
1603
-
1604
1605
  this.$id = "ace/mode/css";
1605
1606
  this.snippetFileId = "ace/snippets/css";
1606
1607
  }).call(Mode.prototype);
1607
-
1608
1608
  exports.Mode = Mode;
1609
1609
 
1610
1610
  });
1611
1611
 
1612
- ace.define("ace/mode/behaviour/xml",[], function(require, exports, module) {
1613
- "use strict";
1614
-
1612
+ ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict";
1615
1613
  var oop = require("../../lib/oop");
1616
1614
  var Behaviour = require("../behaviour").Behaviour;
1617
1615
  var TokenIterator = require("../../token_iterator").TokenIterator;
1618
1616
  var lang = require("../../lib/lang");
1619
-
1620
1617
  function is(token, type) {
1621
1618
  return token && token.type.lastIndexOf(type + ".xml") > -1;
1622
1619
  }
1623
-
1624
1620
  var XmlBehaviour = function () {
1625
-
1626
1621
  this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
1627
1622
  if (text == '"' || text == "'") {
1628
1623
  var quote = text;
@@ -1633,26 +1628,21 @@ var XmlBehaviour = function () {
1633
1628
  selection: false
1634
1629
  };
1635
1630
  }
1636
-
1637
1631
  var cursor = editor.getCursorPosition();
1638
1632
  var line = session.doc.getLine(cursor.row);
1639
1633
  var rightChar = line.substring(cursor.column, cursor.column + 1);
1640
1634
  var iterator = new TokenIterator(session, cursor.row, cursor.column);
1641
1635
  var token = iterator.getCurrentToken();
1642
-
1643
1636
  if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) {
1644
1637
  return {
1645
1638
  text: "",
1646
1639
  selection: [1, 1]
1647
1640
  };
1648
1641
  }
1649
-
1650
1642
  if (!token)
1651
1643
  token = iterator.stepBackward();
1652
-
1653
1644
  if (!token)
1654
1645
  return;
1655
-
1656
1646
  while (is(token, "tag-whitespace") || is(token, "whitespace")) {
1657
1647
  token = iterator.stepBackward();
1658
1648
  }
@@ -1665,8 +1655,7 @@ var XmlBehaviour = function () {
1665
1655
  }
1666
1656
  }
1667
1657
  });
1668
-
1669
- this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {
1658
+ this.add("string_dquotes", "deletion", function (state, action, editor, session, range) {
1670
1659
  var selected = session.doc.getTextRange(range);
1671
1660
  if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
1672
1661
  var line = session.doc.getLine(range.start.row);
@@ -1677,7 +1666,6 @@ var XmlBehaviour = function () {
1677
1666
  }
1678
1667
  }
1679
1668
  });
1680
-
1681
1669
  this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
1682
1670
  if (text == '>') {
1683
1671
  var position = editor.getSelectionRange().start;
@@ -1698,7 +1686,6 @@ var XmlBehaviour = function () {
1698
1686
  iterator.stepBackward();
1699
1687
  }
1700
1688
  }
1701
-
1702
1689
  if (/^\s*>/.test(session.getLine(position.row).slice(position.column)))
1703
1690
  return;
1704
1691
  while (!is(token, "tag-name")) {
@@ -1708,63 +1695,54 @@ var XmlBehaviour = function () {
1708
1695
  break;
1709
1696
  }
1710
1697
  }
1711
-
1712
1698
  var tokenRow = iterator.getCurrentTokenRow();
1713
1699
  var tokenColumn = iterator.getCurrentTokenColumn();
1714
1700
  if (is(iterator.stepBackward(), "end-tag-open"))
1715
1701
  return;
1716
-
1717
1702
  var element = token.value;
1718
1703
  if (tokenRow == position.row)
1719
1704
  element = element.substring(0, position.column - tokenColumn);
1720
-
1721
1705
  if (this.voidElements.hasOwnProperty(element.toLowerCase()))
1722
- return;
1723
-
1706
+ return;
1724
1707
  return {
1725
- text: ">" + "</" + element + ">",
1726
- selection: [1, 1]
1708
+ text: ">" + "</" + element + ">",
1709
+ selection: [1, 1]
1727
1710
  };
1728
1711
  }
1729
1712
  });
1730
-
1731
1713
  this.add("autoindent", "insertion", function (state, action, editor, session, text) {
1732
1714
  if (text == "\n") {
1733
1715
  var cursor = editor.getCursorPosition();
1734
1716
  var line = session.getLine(cursor.row);
1735
1717
  var iterator = new TokenIterator(session, cursor.row, cursor.column);
1736
1718
  var token = iterator.getCurrentToken();
1737
-
1738
1719
  if (token && token.type.indexOf("tag-close") !== -1) {
1739
1720
  if (token.value == "/>")
1740
1721
  return;
1741
1722
  while (token && token.type.indexOf("tag-name") === -1) {
1742
1723
  token = iterator.stepBackward();
1743
1724
  }
1744
-
1745
1725
  if (!token) {
1746
1726
  return;
1747
1727
  }
1748
-
1749
1728
  var tag = token.value;
1750
1729
  var row = iterator.getCurrentTokenRow();
1751
1730
  token = iterator.stepBackward();
1752
1731
  if (!token || token.type.indexOf("end-tag") !== -1) {
1753
1732
  return;
1754
1733
  }
1755
-
1756
1734
  if (this.voidElements && !this.voidElements[tag]) {
1757
- var nextToken = session.getTokenAt(cursor.row, cursor.column+1);
1735
+ var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);
1758
1736
  var line = session.getLine(row);
1759
1737
  var nextIndent = this.$getIndent(line);
1760
1738
  var indent = nextIndent + session.getTabString();
1761
-
1762
1739
  if (nextToken && nextToken.value === "</") {
1763
1740
  return {
1764
1741
  text: "\n" + indent + "\n" + nextIndent,
1765
1742
  selection: [1, indent.length, 1, indent.length]
1766
1743
  };
1767
- } else {
1744
+ }
1745
+ else {
1768
1746
  return {
1769
1747
  text: "\n" + indent
1770
1748
  };
@@ -1773,31 +1751,23 @@ var XmlBehaviour = function () {
1773
1751
  }
1774
1752
  }
1775
1753
  });
1776
-
1777
1754
  };
1778
-
1779
1755
  oop.inherits(XmlBehaviour, Behaviour);
1780
-
1781
1756
  exports.XmlBehaviour = XmlBehaviour;
1782
- });
1783
1757
 
1784
- ace.define("ace/mode/folding/mixed",[], function(require, exports, module) {
1785
- "use strict";
1758
+ });
1786
1759
 
1760
+ ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
1787
1761
  var oop = require("../../lib/oop");
1788
1762
  var BaseFoldMode = require("./fold_mode").FoldMode;
1789
-
1790
- var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
1763
+ var FoldMode = exports.FoldMode = function (defaultMode, subModes) {
1791
1764
  this.defaultMode = defaultMode;
1792
1765
  this.subModes = subModes;
1793
1766
  };
1794
1767
  oop.inherits(FoldMode, BaseFoldMode);
1795
-
1796
- (function() {
1797
-
1798
-
1799
- this.$getMode = function(state) {
1800
- if (typeof state != "string")
1768
+ (function () {
1769
+ this.$getMode = function (state) {
1770
+ if (typeof state != "string")
1801
1771
  state = state[0];
1802
1772
  for (var key in this.subModes) {
1803
1773
  if (state.indexOf(key) === 0)
@@ -1805,96 +1775,70 @@ oop.inherits(FoldMode, BaseFoldMode);
1805
1775
  }
1806
1776
  return null;
1807
1777
  };
1808
-
1809
- this.$tryMode = function(state, session, foldStyle, row) {
1778
+ this.$tryMode = function (state, session, foldStyle, row) {
1810
1779
  var mode = this.$getMode(state);
1811
1780
  return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
1812
1781
  };
1813
-
1814
- this.getFoldWidget = function(session, foldStyle, row) {
1815
- return (
1816
- this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
1782
+ this.getFoldWidget = function (session, foldStyle, row) {
1783
+ return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) ||
1817
1784
  this.$tryMode(session.getState(row), session, foldStyle, row) ||
1818
- this.defaultMode.getFoldWidget(session, foldStyle, row)
1819
- );
1785
+ this.defaultMode.getFoldWidget(session, foldStyle, row));
1820
1786
  };
1821
-
1822
- this.getFoldWidgetRange = function(session, foldStyle, row) {
1823
- var mode = this.$getMode(session.getState(row-1));
1824
-
1787
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
1788
+ var mode = this.$getMode(session.getState(row - 1));
1825
1789
  if (!mode || !mode.getFoldWidget(session, foldStyle, row))
1826
1790
  mode = this.$getMode(session.getState(row));
1827
-
1828
1791
  if (!mode || !mode.getFoldWidget(session, foldStyle, row))
1829
1792
  mode = this.defaultMode;
1830
-
1831
1793
  return mode.getFoldWidgetRange(session, foldStyle, row);
1832
1794
  };
1833
-
1834
1795
  }).call(FoldMode.prototype);
1835
1796
 
1836
1797
  });
1837
1798
 
1838
- ace.define("ace/mode/folding/xml",[], function(require, exports, module) {
1839
- "use strict";
1840
-
1799
+ ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
1841
1800
  var oop = require("../../lib/oop");
1842
- var lang = require("../../lib/lang");
1843
1801
  var Range = require("../../range").Range;
1844
1802
  var BaseFoldMode = require("./fold_mode").FoldMode;
1845
- var TokenIterator = require("../../token_iterator").TokenIterator;
1846
-
1847
- var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) {
1803
+ var FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {
1848
1804
  BaseFoldMode.call(this);
1849
1805
  this.voidElements = voidElements || {};
1850
1806
  this.optionalEndTags = oop.mixin({}, this.voidElements);
1851
1807
  if (optionalEndTags)
1852
1808
  oop.mixin(this.optionalEndTags, optionalEndTags);
1853
-
1854
1809
  };
1855
1810
  oop.inherits(FoldMode, BaseFoldMode);
1856
-
1857
- var Tag = function() {
1811
+ var Tag = function () {
1858
1812
  this.tagName = "";
1859
1813
  this.closing = false;
1860
1814
  this.selfClosing = false;
1861
- this.start = {row: 0, column: 0};
1862
- this.end = {row: 0, column: 0};
1815
+ this.start = { row: 0, column: 0 };
1816
+ this.end = { row: 0, column: 0 };
1863
1817
  };
1864
-
1865
1818
  function is(token, type) {
1866
1819
  return token.type.lastIndexOf(type + ".xml") > -1;
1867
1820
  }
1868
-
1869
- (function() {
1870
-
1871
- this.getFoldWidget = function(session, foldStyle, row) {
1821
+ (function () {
1822
+ this.getFoldWidget = function (session, foldStyle, row) {
1872
1823
  var tag = this._getFirstTagInLine(session, row);
1873
-
1874
1824
  if (!tag)
1875
1825
  return this.getCommentFoldWidget(session, row);
1876
-
1877
1826
  if (tag.closing || (!tag.tagName && tag.selfClosing))
1878
- return foldStyle == "markbeginend" ? "end" : "";
1879
-
1827
+ return foldStyle === "markbeginend" ? "end" : "";
1880
1828
  if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))
1881
1829
  return "";
1882
-
1883
1830
  if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))
1884
1831
  return "";
1885
-
1886
1832
  return "start";
1887
1833
  };
1888
-
1889
- this.getCommentFoldWidget = function(session, row) {
1834
+ this.getCommentFoldWidget = function (session, row) {
1890
1835
  if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))
1891
1836
  return "start";
1892
1837
  return "";
1893
1838
  };
1894
- this._getFirstTagInLine = function(session, row) {
1839
+ this._getFirstTagInLine = function (session, row) {
1895
1840
  var tokens = session.getTokens(row);
1896
1841
  var tag = new Tag();
1897
-
1898
1842
  for (var i = 0; i < tokens.length; i++) {
1899
1843
  var token = tokens[i];
1900
1844
  if (is(token, "tag-open")) {
@@ -1914,17 +1858,16 @@ function is(token, type) {
1914
1858
  }
1915
1859
  }
1916
1860
  return tag;
1917
- } else if (is(token, "tag-close")) {
1861
+ }
1862
+ else if (is(token, "tag-close")) {
1918
1863
  tag.selfClosing = token.value == '/>';
1919
1864
  return tag;
1920
1865
  }
1921
1866
  tag.start.column += token.value.length;
1922
1867
  }
1923
-
1924
1868
  return null;
1925
1869
  };
1926
-
1927
- this._findEndTagInLine = function(session, row, tagName, startColumn) {
1870
+ this._findEndTagInLine = function (session, row, tagName, startColumn) {
1928
1871
  var tokens = session.getTokens(row);
1929
1872
  var column = 0;
1930
1873
  for (var i = 0; i < tokens.length; i++) {
@@ -1940,174 +1883,37 @@ function is(token, type) {
1940
1883
  }
1941
1884
  return false;
1942
1885
  };
1943
- this._readTagForward = function(iterator) {
1944
- var token = iterator.getCurrentToken();
1945
- if (!token)
1946
- return null;
1947
-
1948
- var tag = new Tag();
1949
- do {
1950
- if (is(token, "tag-open")) {
1951
- tag.closing = is(token, "end-tag-open");
1952
- tag.start.row = iterator.getCurrentTokenRow();
1953
- tag.start.column = iterator.getCurrentTokenColumn();
1954
- } else if (is(token, "tag-name")) {
1955
- tag.tagName = token.value;
1956
- } else if (is(token, "tag-close")) {
1957
- tag.selfClosing = token.value == "/>";
1958
- tag.end.row = iterator.getCurrentTokenRow();
1959
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1960
- iterator.stepForward();
1961
- return tag;
1962
- }
1963
- } while(token = iterator.stepForward());
1964
-
1965
- return null;
1966
- };
1967
-
1968
- this._readTagBackward = function(iterator) {
1969
- var token = iterator.getCurrentToken();
1970
- if (!token)
1971
- return null;
1972
-
1973
- var tag = new Tag();
1974
- do {
1975
- if (is(token, "tag-open")) {
1976
- tag.closing = is(token, "end-tag-open");
1977
- tag.start.row = iterator.getCurrentTokenRow();
1978
- tag.start.column = iterator.getCurrentTokenColumn();
1979
- iterator.stepBackward();
1980
- return tag;
1981
- } else if (is(token, "tag-name")) {
1982
- tag.tagName = token.value;
1983
- } else if (is(token, "tag-close")) {
1984
- tag.selfClosing = token.value == "/>";
1985
- tag.end.row = iterator.getCurrentTokenRow();
1986
- tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1987
- }
1988
- } while(token = iterator.stepBackward());
1989
-
1990
- return null;
1991
- };
1992
-
1993
- this._pop = function(stack, tag) {
1994
- while (stack.length) {
1995
-
1996
- var top = stack[stack.length-1];
1997
- if (!tag || top.tagName == tag.tagName) {
1998
- return stack.pop();
1999
- }
2000
- else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
2001
- stack.pop();
2002
- continue;
2003
- } else {
2004
- return null;
2005
- }
1886
+ this.getFoldWidgetRange = function (session, foldStyle, row) {
1887
+ var tags = session.getMatchingTags({ row: row, column: 0 });
1888
+ if (tags) {
1889
+ return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column);
2006
1890
  }
2007
- };
2008
-
2009
- this.getFoldWidgetRange = function(session, foldStyle, row) {
2010
- var firstTag = this._getFirstTagInLine(session, row);
2011
-
2012
- if (!firstTag) {
1891
+ else {
2013
1892
  return this.getCommentFoldWidget(session, row)
2014
1893
  && session.getCommentFoldRange(row, session.getLine(row).length);
2015
1894
  }
2016
-
2017
- var isBackward = firstTag.closing || firstTag.selfClosing;
2018
- var stack = [];
2019
- var tag;
2020
-
2021
- if (!isBackward) {
2022
- var iterator = new TokenIterator(session, row, firstTag.start.column);
2023
- var start = {
2024
- row: row,
2025
- column: firstTag.start.column + firstTag.tagName.length + 2
2026
- };
2027
- if (firstTag.start.row == firstTag.end.row)
2028
- start.column = firstTag.end.column;
2029
- while (tag = this._readTagForward(iterator)) {
2030
- if (tag.selfClosing) {
2031
- if (!stack.length) {
2032
- tag.start.column += tag.tagName.length + 2;
2033
- tag.end.column -= 2;
2034
- return Range.fromPoints(tag.start, tag.end);
2035
- } else
2036
- continue;
2037
- }
2038
-
2039
- if (tag.closing) {
2040
- this._pop(stack, tag);
2041
- if (stack.length == 0)
2042
- return Range.fromPoints(start, tag.start);
2043
- }
2044
- else {
2045
- stack.push(tag);
2046
- }
2047
- }
2048
- }
2049
- else {
2050
- var iterator = new TokenIterator(session, row, firstTag.end.column);
2051
- var end = {
2052
- row: row,
2053
- column: firstTag.start.column
2054
- };
2055
-
2056
- while (tag = this._readTagBackward(iterator)) {
2057
- if (tag.selfClosing) {
2058
- if (!stack.length) {
2059
- tag.start.column += tag.tagName.length + 2;
2060
- tag.end.column -= 2;
2061
- return Range.fromPoints(tag.start, tag.end);
2062
- } else
2063
- continue;
2064
- }
2065
-
2066
- if (!tag.closing) {
2067
- this._pop(stack, tag);
2068
- if (stack.length == 0) {
2069
- tag.start.column += tag.tagName.length + 2;
2070
- if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)
2071
- tag.start.column = tag.end.column;
2072
- return Range.fromPoints(tag.start, end);
2073
- }
2074
- }
2075
- else {
2076
- stack.push(tag);
2077
- }
2078
- }
2079
- }
2080
-
2081
1895
  };
2082
-
2083
1896
  }).call(FoldMode.prototype);
2084
1897
 
2085
1898
  });
2086
1899
 
2087
- ace.define("ace/mode/folding/html",[], function(require, exports, module) {
2088
- "use strict";
2089
-
1900
+ ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
2090
1901
  var oop = require("../../lib/oop");
2091
1902
  var MixedFoldMode = require("./mixed").FoldMode;
2092
1903
  var XmlFoldMode = require("./xml").FoldMode;
2093
1904
  var CStyleFoldMode = require("./cstyle").FoldMode;
2094
-
2095
- var FoldMode = exports.FoldMode = function(voidElements, optionalTags) {
1905
+ var FoldMode = exports.FoldMode = function (voidElements, optionalTags) {
2096
1906
  MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {
2097
1907
  "js-": new CStyleFoldMode(),
2098
1908
  "css-": new CStyleFoldMode()
2099
1909
  });
2100
1910
  };
2101
-
2102
1911
  oop.inherits(FoldMode, MixedFoldMode);
2103
1912
 
2104
1913
  });
2105
1914
 
2106
- ace.define("ace/mode/html_completions",[], function(require, exports, module) {
2107
- "use strict";
2108
-
1915
+ ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict";
2109
1916
  var TokenIterator = require("../token_iterator").TokenIterator;
2110
-
2111
1917
  var commonAttributes = [
2112
1918
  "accesskey",
2113
1919
  "class",
@@ -2131,7 +1937,6 @@ var commonAttributes = [
2131
1937
  "title",
2132
1938
  "translate"
2133
1939
  ];
2134
-
2135
1940
  var eventAttributes = [
2136
1941
  "onabort",
2137
1942
  "onblur",
@@ -2189,49 +1994,47 @@ var eventAttributes = [
2189
1994
  "onvolumechange",
2190
1995
  "onwaiting"
2191
1996
  ];
2192
-
2193
1997
  var globalAttributes = commonAttributes.concat(eventAttributes);
2194
-
2195
1998
  var attributeMap = {
2196
- "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1},
1999
+ "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 },
2197
2000
  "abbr": {},
2198
2001
  "address": {},
2199
- "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2200
- "article": {"pubdate": 1},
2002
+ "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 },
2003
+ "article": { "pubdate": 1 },
2201
2004
  "aside": {},
2202
- "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2005
+ "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } },
2203
2006
  "b": {},
2204
- "base": {"href": 1, "target": 1},
2007
+ "base": { "href": 1, "target": 1 },
2205
2008
  "bdi": {},
2206
2009
  "bdo": {},
2207
- "blockquote": {"cite": 1},
2208
- "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1},
2010
+ "blockquote": { "cite": 1 },
2011
+ "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 },
2209
2012
  "br": {},
2210
- "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}},
2211
- "canvas": {"width": 1, "height": 1},
2013
+ "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } },
2014
+ "canvas": { "width": 1, "height": 1 },
2212
2015
  "caption": {},
2213
2016
  "cite": {},
2214
2017
  "code": {},
2215
- "col": {"span": 1},
2216
- "colgroup": {"span": 1},
2217
- "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2018
+ "col": { "span": 1 },
2019
+ "colgroup": { "span": 1 },
2020
+ "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 },
2218
2021
  "data": {},
2219
2022
  "datalist": {},
2220
2023
  "dd": {},
2221
- "del": {"cite": 1, "datetime": 1},
2222
- "details": {"open": 1},
2024
+ "del": { "cite": 1, "datetime": 1 },
2025
+ "details": { "open": 1 },
2223
2026
  "dfn": {},
2224
- "dialog": {"open": 1},
2027
+ "dialog": { "open": 1 },
2225
2028
  "div": {},
2226
2029
  "dl": {},
2227
2030
  "dt": {},
2228
2031
  "em": {},
2229
- "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2230
- "fieldset": {"disabled": 1, "form": 1, "name": 1},
2032
+ "embed": { "src": 1, "height": 1, "width": 1, "type": 1 },
2033
+ "fieldset": { "disabled": 1, "form": 1, "name": 1 },
2231
2034
  "figcaption": {},
2232
2035
  "figure": {},
2233
2036
  "footer": {},
2234
- "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}},
2037
+ "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } },
2235
2038
  "h1": {},
2236
2039
  "h2": {},
2237
2040
  "h3": {},
@@ -2241,109 +2044,101 @@ var attributeMap = {
2241
2044
  "head": {},
2242
2045
  "header": {},
2243
2046
  "hr": {},
2244
- "html": {"manifest": 1},
2047
+ "html": { "manifest": 1 },
2245
2048
  "i": {},
2246
- "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}},
2247
- "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2049
+ "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } },
2050
+ "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 },
2248
2051
  "input": {
2249
- "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1},
2250
- "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1},
2251
- "ins": {"cite": 1, "datetime": 1},
2052
+ "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 },
2053
+ "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1
2054
+ },
2055
+ "ins": { "cite": 1, "datetime": 1 },
2252
2056
  "kbd": {},
2253
- "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2254
- "label": {"form": 1, "for": 1},
2057
+ "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 },
2058
+ "label": { "form": 1, "for": 1 },
2255
2059
  "legend": {},
2256
- "li": {"value": 1},
2257
- "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1},
2060
+ "li": { "value": 1 },
2061
+ "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 },
2258
2062
  "main": {},
2259
- "map": {"name": 1},
2063
+ "map": { "name": 1 },
2260
2064
  "mark": {},
2261
2065
  "math": {},
2262
- "menu": {"type": 1, "label": 1},
2263
- "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2264
- "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2066
+ "menu": { "type": 1, "label": 1 },
2067
+ "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 },
2068
+ "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 },
2265
2069
  "nav": {},
2266
- "noscript": {"href": 1},
2267
- "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2268
- "ol": {"start": 1, "reversed": 1},
2269
- "optgroup": {"disabled": 1, "label": 1},
2270
- "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2271
- "output": {"for": 1, "form": 1, "name": 1},
2070
+ "noscript": { "href": 1 },
2071
+ "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 },
2072
+ "ol": { "start": 1, "reversed": 1 },
2073
+ "optgroup": { "disabled": 1, "label": 1 },
2074
+ "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 },
2075
+ "output": { "for": 1, "form": 1, "name": 1 },
2272
2076
  "p": {},
2273
- "param": {"name": 1, "value": 1},
2077
+ "param": { "name": 1, "value": 1 },
2274
2078
  "pre": {},
2275
- "progress": {"value": 1, "max": 1},
2276
- "q": {"cite": 1},
2079
+ "progress": { "value": 1, "max": 1 },
2080
+ "q": { "cite": 1 },
2277
2081
  "rp": {},
2278
2082
  "rt": {},
2279
2083
  "ruby": {},
2280
2084
  "s": {},
2281
2085
  "samp": {},
2282
- "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2283
- "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2086
+ "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 },
2087
+ "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } },
2284
2088
  "small": {},
2285
- "source": {"src": 1, "type": 1, "media": 1},
2089
+ "source": { "src": 1, "type": 1, "media": 1 },
2286
2090
  "span": {},
2287
2091
  "strong": {},
2288
- "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2092
+ "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 },
2289
2093
  "sub": {},
2290
2094
  "sup": {},
2291
2095
  "svg": {},
2292
- "table": {"summary": 1},
2096
+ "table": { "summary": 1 },
2293
2097
  "tbody": {},
2294
- "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2295
- "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}},
2098
+ "td": { "headers": 1, "rowspan": 1, "colspan": 1 },
2099
+ "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } },
2296
2100
  "tfoot": {},
2297
- "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2101
+ "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 },
2298
2102
  "thead": {},
2299
- "time": {"datetime": 1},
2103
+ "time": { "datetime": 1 },
2300
2104
  "title": {},
2301
2105
  "tr": {},
2302
- "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2106
+ "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 },
2303
2107
  "section": {},
2304
2108
  "summary": {},
2305
2109
  "u": {},
2306
2110
  "ul": {},
2307
2111
  "var": {},
2308
- "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}},
2112
+ "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } },
2309
2113
  "wbr": {}
2310
2114
  };
2311
-
2312
2115
  var elements = Object.keys(attributeMap);
2313
-
2314
2116
  function is(token, type) {
2315
2117
  return token.type.lastIndexOf(type + ".xml") > -1;
2316
2118
  }
2317
-
2318
2119
  function findTagName(session, pos) {
2319
2120
  var iterator = new TokenIterator(session, pos.row, pos.column);
2320
2121
  var token = iterator.getCurrentToken();
2321
- while (token && !is(token, "tag-name")){
2122
+ while (token && !is(token, "tag-name")) {
2322
2123
  token = iterator.stepBackward();
2323
2124
  }
2324
2125
  if (token)
2325
2126
  return token.value;
2326
2127
  }
2327
-
2328
2128
  function findAttributeName(session, pos) {
2329
2129
  var iterator = new TokenIterator(session, pos.row, pos.column);
2330
2130
  var token = iterator.getCurrentToken();
2331
- while (token && !is(token, "attribute-name")){
2131
+ while (token && !is(token, "attribute-name")) {
2332
2132
  token = iterator.stepBackward();
2333
2133
  }
2334
2134
  if (token)
2335
2135
  return token.value;
2336
2136
  }
2337
-
2338
- var HtmlCompletions = function() {
2339
-
2137
+ var HtmlCompletions = function () {
2340
2138
  };
2341
-
2342
- (function() {
2343
-
2344
- this.getCompletions = function(state, session, pos, prefix) {
2139
+ (function () {
2140
+ this.getCompletions = function (state, session, pos, prefix) {
2345
2141
  var token = session.getTokenAt(pos.row, pos.column);
2346
-
2347
2142
  if (!token)
2348
2143
  return [];
2349
2144
  if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open"))
@@ -2355,12 +2150,10 @@ var HtmlCompletions = function() {
2355
2150
  var line = session.getLine(pos.row).substr(0, pos.column);
2356
2151
  if (/&[a-z]*$/i.test(line))
2357
2152
  return this.getHTMLEntityCompletions(state, session, pos, prefix);
2358
-
2359
2153
  return [];
2360
2154
  };
2361
-
2362
- this.getTagCompletions = function(state, session, pos, prefix) {
2363
- return elements.map(function(element){
2155
+ this.getTagCompletions = function (state, session, pos, prefix) {
2156
+ return elements.map(function (element) {
2364
2157
  return {
2365
2158
  value: element,
2366
2159
  meta: "tag",
@@ -2368,8 +2161,7 @@ var HtmlCompletions = function() {
2368
2161
  };
2369
2162
  });
2370
2163
  };
2371
-
2372
- this.getAttributeCompletions = function(state, session, pos, prefix) {
2164
+ this.getAttributeCompletions = function (state, session, pos, prefix) {
2373
2165
  var tagName = findTagName(session, pos);
2374
2166
  if (!tagName)
2375
2167
  return [];
@@ -2377,7 +2169,7 @@ var HtmlCompletions = function() {
2377
2169
  if (tagName in attributeMap) {
2378
2170
  attributes = attributes.concat(Object.keys(attributeMap[tagName]));
2379
2171
  }
2380
- return attributes.map(function(attribute){
2172
+ return attributes.map(function (attribute) {
2381
2173
  return {
2382
2174
  caption: attribute,
2383
2175
  snippet: attribute + '="$0"',
@@ -2386,18 +2178,16 @@ var HtmlCompletions = function() {
2386
2178
  };
2387
2179
  });
2388
2180
  };
2389
-
2390
- this.getAttributeValueCompletions = function(state, session, pos, prefix) {
2181
+ this.getAttributeValueCompletions = function (state, session, pos, prefix) {
2391
2182
  var tagName = findTagName(session, pos);
2392
2183
  var attributeName = findAttributeName(session, pos);
2393
-
2394
2184
  if (!tagName)
2395
2185
  return [];
2396
2186
  var values = [];
2397
2187
  if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") {
2398
2188
  values = Object.keys(attributeMap[tagName][attributeName]);
2399
2189
  }
2400
- return values.map(function(value){
2190
+ return values.map(function (value) {
2401
2191
  return {
2402
2192
  caption: value,
2403
2193
  snippet: value,
@@ -2406,11 +2196,9 @@ var HtmlCompletions = function() {
2406
2196
  };
2407
2197
  });
2408
2198
  };
2409
-
2410
- this.getHTMLEntityCompletions = function(state, session, pos, prefix) {
2199
+ this.getHTMLEntityCompletions = function (state, session, pos, prefix) {
2411
2200
  var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];
2412
-
2413
- return values.map(function(value){
2201
+ return values.map(function (value) {
2414
2202
  return {
2415
2203
  caption: value,
2416
2204
  snippet: value,
@@ -2419,15 +2207,12 @@ var HtmlCompletions = function() {
2419
2207
  };
2420
2208
  });
2421
2209
  };
2422
-
2423
2210
  }).call(HtmlCompletions.prototype);
2424
-
2425
2211
  exports.HtmlCompletions = HtmlCompletions;
2426
- });
2427
2212
 
2428
- ace.define("ace/mode/html",[], function(require, exports, module) {
2429
- "use strict";
2213
+ });
2430
2214
 
2215
+ ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict";
2431
2216
  var oop = require("../lib/oop");
2432
2217
  var lang = require("../lib/lang");
2433
2218
  var TextMode = require("./text").Mode;
@@ -2440,136 +2225,105 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions;
2440
2225
  var WorkerClient = require("../worker/worker_client").WorkerClient;
2441
2226
  var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"];
2442
2227
  var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"];
2443
-
2444
- var Mode = function(options) {
2228
+ var Mode = function (options) {
2445
2229
  this.fragmentContext = options && options.fragmentContext;
2446
2230
  this.HighlightRules = HtmlHighlightRules;
2447
2231
  this.$behaviour = new XmlBehaviour();
2448
2232
  this.$completer = new HtmlCompletions();
2449
-
2450
2233
  this.createModeDelegates({
2451
2234
  "js-": JavaScriptMode,
2452
2235
  "css-": CssMode
2453
2236
  });
2454
-
2455
2237
  this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));
2456
2238
  };
2457
2239
  oop.inherits(Mode, TextMode);
2458
-
2459
- (function() {
2460
-
2461
- this.blockComment = {start: "<!--", end: "-->"};
2462
-
2240
+ (function () {
2241
+ this.blockComment = { start: "<!--", end: "-->" };
2463
2242
  this.voidElements = lang.arrayToMap(voidElements);
2464
-
2465
- this.getNextLineIndent = function(state, line, tab) {
2243
+ this.getNextLineIndent = function (state, line, tab) {
2466
2244
  return this.$getIndent(line);
2467
2245
  };
2468
-
2469
- this.checkOutdent = function(state, line, input) {
2246
+ this.checkOutdent = function (state, line, input) {
2470
2247
  return false;
2471
2248
  };
2472
-
2473
- this.getCompletions = function(state, session, pos, prefix) {
2249
+ this.getCompletions = function (state, session, pos, prefix) {
2474
2250
  return this.$completer.getCompletions(state, session, pos, prefix);
2475
2251
  };
2476
-
2477
- this.createWorker = function(session) {
2252
+ this.createWorker = function (session) {
2478
2253
  if (this.constructor != Mode)
2479
2254
  return;
2480
2255
  var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker");
2481
2256
  worker.attachToDocument(session.getDocument());
2482
-
2483
2257
  if (this.fragmentContext)
2484
- worker.call("setOptions", [{context: this.fragmentContext}]);
2485
-
2486
- worker.on("error", function(e) {
2258
+ worker.call("setOptions", [{ context: this.fragmentContext }]);
2259
+ worker.on("error", function (e) {
2487
2260
  session.setAnnotations(e.data);
2488
2261
  });
2489
-
2490
- worker.on("terminate", function() {
2262
+ worker.on("terminate", function () {
2491
2263
  session.clearAnnotations();
2492
2264
  });
2493
-
2494
2265
  return worker;
2495
2266
  };
2496
-
2497
2267
  this.$id = "ace/mode/html";
2498
2268
  this.snippetFileId = "ace/snippets/html";
2499
2269
  }).call(Mode.prototype);
2500
-
2501
2270
  exports.Mode = Mode;
2502
- });
2503
2271
 
2504
- ace.define("ace/mode/ruby_highlight_rules",[], function(require, exports, module) {
2505
- "use strict";
2272
+ });
2506
2273
 
2274
+ ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
2507
2275
  var oop = require("../lib/oop");
2508
2276
  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
2509
2277
  var constantOtherSymbol = exports.constantOtherSymbol = {
2510
- token : "constant.other.symbol.ruby", // symbol
2511
- regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
2278
+ token: "constant.other.symbol.ruby",
2279
+ regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
2512
2280
  };
2513
-
2514
2281
  exports.qString = {
2515
- token : "string", // single line
2516
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
2282
+ token: "string",
2283
+ regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
2517
2284
  };
2518
-
2519
2285
  exports.qqString = {
2520
- token : "string", // single line
2521
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
2286
+ token: "string",
2287
+ regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
2522
2288
  };
2523
-
2524
2289
  exports.tString = {
2525
- token : "string", // backtick string
2526
- regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
2290
+ token: "string",
2291
+ regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
2527
2292
  };
2528
-
2529
2293
  var constantNumericHex = exports.constantNumericHex = {
2530
- token : "constant.numeric", // hex
2531
- regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
2294
+ token: "constant.numeric",
2295
+ regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
2532
2296
  };
2533
-
2534
2297
  var constantNumericBinary = exports.constantNumericBinary = {
2535
2298
  token: "constant.numeric",
2536
2299
  regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/
2537
2300
  };
2538
-
2539
2301
  var constantNumericDecimal = exports.constantNumericDecimal = {
2540
2302
  token: "constant.numeric",
2541
2303
  regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/
2542
2304
  };
2543
-
2544
2305
  var constantNumericOctal = exports.constantNumericDecimal = {
2545
2306
  token: "constant.numeric",
2546
2307
  regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/
2547
2308
  };
2548
-
2549
2309
  var constantNumericRational = exports.constantNumericRational = {
2550
- token: "constant.numeric", //rational + complex
2310
+ token: "constant.numeric",
2551
2311
  regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/
2552
2312
  };
2553
-
2554
2313
  var constantNumericComplex = exports.constantNumericComplex = {
2555
- token: "constant.numeric", //simple complex numbers
2314
+ token: "constant.numeric",
2556
2315
  regex: /\b([\d]i)\b/
2557
2316
  };
2558
-
2559
2317
  var constantNumericFloat = exports.constantNumericFloat = {
2560
- token : "constant.numeric", // float + complex
2561
- regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
2318
+ token: "constant.numeric",
2319
+ regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"
2562
2320
  };
2563
-
2564
2321
  var instanceVariable = exports.instanceVariable = {
2565
- token : "variable.instance", // instance variable
2566
- regex : "@{1,2}[a-zA-Z_\\d]+"
2322
+ token: "variable.instance",
2323
+ regex: "@{1,2}[a-zA-Z_\\d]+"
2567
2324
  };
2568
-
2569
- var RubyHighlightRules = function() {
2570
-
2571
- var builtinFunctions = (
2572
- "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" +
2325
+ var RubyHighlightRules = function () {
2326
+ var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" +
2573
2327
  "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" +
2574
2328
  "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" +
2575
2329
  "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" +
@@ -2599,25 +2353,14 @@ var RubyHighlightRules = function() {
2599
2353
  "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" +
2600
2354
  "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" +
2601
2355
  "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" +
2602
- "private_class_method|remove_method|undef_method"
2603
- );
2604
-
2605
- var keywords = (
2606
- "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
2356
+ "private_class_method|remove_method|undef_method");
2357
+ var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
2607
2358
  "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" +
2608
- "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"
2609
- );
2610
-
2611
- var buildinConstants = (
2612
- "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
2613
- "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"
2614
- );
2615
-
2616
- var builtinVariables = (
2617
- "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" +
2618
- "$!|root_url|flash|session|cookies|params|request|response|logger|self"
2619
- );
2620
-
2359
+ "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend");
2360
+ var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
2361
+ "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION");
2362
+ var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" +
2363
+ "$!|root_url|flash|session|cookies|params|request|response|logger|self");
2621
2364
  var keywordMapper = this.$keywords = this.createKeywordMapper({
2622
2365
  "keyword": keywords,
2623
2366
  "constant.language": buildinConstants,
@@ -2625,9 +2368,7 @@ var RubyHighlightRules = function() {
2625
2368
  "support.function": builtinFunctions,
2626
2369
  "invalid.deprecated": "debugger" // TODO is this a remnant from js mode?
2627
2370
  }, "identifier");
2628
-
2629
2371
  var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})";
2630
-
2631
2372
  var closeParen = {
2632
2373
  "(": ")",
2633
2374
  "[": "]",
@@ -2637,14 +2378,13 @@ var RubyHighlightRules = function() {
2637
2378
  "|": "|",
2638
2379
  "%": "%"
2639
2380
  };
2640
-
2641
2381
  this.$rules = {
2642
2382
  "start": [
2643
2383
  {
2644
2384
  token: "comment",
2645
2385
  regex: "#.*$"
2646
2386
  }, {
2647
- token: "comment.multiline", // multi line comment
2387
+ token: "comment.multiline",
2648
2388
  regex: "^=begin(?=$|\\s.*$)",
2649
2389
  next: "comment"
2650
2390
  }, {
@@ -2652,116 +2392,114 @@ var RubyHighlightRules = function() {
2652
2392
  regex: /[/](?=.*\/)/,
2653
2393
  next: "regex"
2654
2394
  },
2655
-
2656
2395
  [{
2657
- token: ["constant.other.symbol.ruby", "string.start"],
2658
- regex: /(:)?(")/,
2659
- push: [{
2660
- token: "constant.language.escape",
2661
- regex: escapedChars
2662
- }, {
2663
- token: "paren.start",
2664
- regex: /#{/,
2665
- push: "start"
2396
+ token: ["constant.other.symbol.ruby", "string.start"],
2397
+ regex: /(:)?(")/,
2398
+ push: [{
2399
+ token: "constant.language.escape",
2400
+ regex: escapedChars
2401
+ }, {
2402
+ token: "paren.start",
2403
+ regex: /#{/,
2404
+ push: "start"
2405
+ }, {
2406
+ token: "string.end",
2407
+ regex: /"/,
2408
+ next: "pop"
2409
+ }, {
2410
+ defaultToken: "string"
2411
+ }]
2666
2412
  }, {
2667
- token: "string.end",
2668
- regex: /"/,
2669
- next: "pop"
2413
+ token: "string.start",
2414
+ regex: /`/,
2415
+ push: [{
2416
+ token: "constant.language.escape",
2417
+ regex: escapedChars
2418
+ }, {
2419
+ token: "paren.start",
2420
+ regex: /#{/,
2421
+ push: "start"
2422
+ }, {
2423
+ token: "string.end",
2424
+ regex: /`/,
2425
+ next: "pop"
2426
+ }, {
2427
+ defaultToken: "string"
2428
+ }]
2670
2429
  }, {
2671
- defaultToken: "string"
2672
- }]
2673
- }, {
2674
- token: "string.start",
2675
- regex: /`/,
2676
- push: [{
2677
- token: "constant.language.escape",
2678
- regex: escapedChars
2430
+ token: ["constant.other.symbol.ruby", "string.start"],
2431
+ regex: /(:)?(')/,
2432
+ push: [{
2433
+ token: "constant.language.escape",
2434
+ regex: /\\['\\]/
2435
+ }, {
2436
+ token: "string.end",
2437
+ regex: /'/,
2438
+ next: "pop"
2439
+ }, {
2440
+ defaultToken: "string"
2441
+ }]
2679
2442
  }, {
2680
- token: "paren.start",
2681
- regex: /#{/,
2682
- push: "start"
2443
+ token: "string.start",
2444
+ regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2445
+ if (stack.length)
2446
+ stack = [];
2447
+ var paren = val[val.length - 1];
2448
+ stack.unshift(paren, state);
2449
+ this.next = "qStateWithoutInterpolation";
2450
+ return this.token;
2451
+ }
2683
2452
  }, {
2684
- token: "string.end",
2685
- regex: /`/,
2686
- next: "pop"
2453
+ token: "string.start",
2454
+ regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) {
2455
+ if (stack.length)
2456
+ stack = [];
2457
+ var paren = val[val.length - 1];
2458
+ stack.unshift(paren, state);
2459
+ this.next = "qStateWithInterpolation";
2460
+ return this.token;
2461
+ }
2687
2462
  }, {
2688
- defaultToken: "string"
2689
- }]
2690
- }, {
2691
- token: ["constant.other.symbol.ruby", "string.start"],
2692
- regex: /(:)?(')/,
2693
- push: [{
2694
- token: "constant.language.escape",
2695
- regex: /\\['\\]/
2463
+ token: "constant.other.symbol.ruby",
2464
+ regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2465
+ if (stack.length)
2466
+ stack = [];
2467
+ var paren = val[val.length - 1];
2468
+ stack.unshift(paren, state);
2469
+ this.next = "sStateWithoutInterpolation";
2470
+ return this.token;
2471
+ }
2696
2472
  }, {
2697
- token: "string.end",
2698
- regex: /'/,
2699
- next: "pop"
2473
+ token: "constant.other.symbol.ruby",
2474
+ regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2475
+ if (stack.length)
2476
+ stack = [];
2477
+ var paren = val[val.length - 1];
2478
+ stack.unshift(paren, state);
2479
+ this.next = "sStateWithInterpolation";
2480
+ return this.token;
2481
+ }
2700
2482
  }, {
2701
- defaultToken: "string"
2702
- }]
2703
- }, {
2704
- token: "string.start",//doesn't see any differences between strings and array of strings in highlighting
2705
- regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2706
- if (stack.length)
2707
- stack = [];
2708
- var paren = val[val.length - 1];
2709
- stack.unshift(paren, state);
2710
- this.next = "qStateWithoutInterpolation";
2711
- return this.token;
2712
- }
2713
- }, {
2714
- token: "string.start", //doesn't see any differences between strings and array of strings in highlighting
2715
- regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) {
2716
- if (stack.length)
2717
- stack = [];
2718
- var paren = val[val.length - 1];
2719
- stack.unshift(paren, state);
2720
- this.next = "qStateWithInterpolation";
2721
- return this.token;
2722
- }
2723
- }, {
2724
- token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2725
- regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2726
- if (stack.length)
2727
- stack = [];
2728
- var paren = val[val.length - 1];
2729
- stack.unshift(paren, state);
2730
- this.next = "sStateWithoutInterpolation";
2731
- return this.token;
2732
- }
2733
- }, {
2734
- token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting
2735
- regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2736
- if (stack.length)
2737
- stack = [];
2738
- var paren = val[val.length - 1];
2739
- stack.unshift(paren, state);
2740
- this.next = "sStateWithInterpolation";
2741
- return this.token;
2742
- }
2743
- }, {
2744
- token: "string.regexp",
2745
- regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2746
- if (stack.length)
2747
- stack = [];
2748
- var paren = val[val.length - 1];
2749
- stack.unshift(paren, state);
2750
- this.next = "rState";
2751
- return this.token;
2752
- }
2753
- }],
2754
-
2483
+ token: "string.regexp",
2484
+ regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) {
2485
+ if (stack.length)
2486
+ stack = [];
2487
+ var paren = val[val.length - 1];
2488
+ stack.unshift(paren, state);
2489
+ this.next = "rState";
2490
+ return this.token;
2491
+ }
2492
+ }],
2755
2493
  {
2756
- token: "punctuation", // namespaces aren't symbols
2494
+ token: "punctuation",
2757
2495
  regex: "::"
2758
2496
  },
2759
2497
  instanceVariable,
2760
2498
  {
2761
- token: "variable.global", // global variable
2499
+ token: "variable.global",
2762
2500
  regex: "[$][a-zA-Z_\\d]+"
2763
2501
  }, {
2764
- token: "support.class", // class name
2502
+ token: "support.class",
2765
2503
  regex: "[A-Z][a-zA-Z_\\d]*"
2766
2504
  }, {
2767
2505
  token: ["punctuation.operator", "support.function"],
@@ -2776,7 +2514,6 @@ var RubyHighlightRules = function() {
2776
2514
  token: "punctuation.operator",
2777
2515
  regex: /\?(?=.+:)/
2778
2516
  },
2779
-
2780
2517
  constantNumericRational,
2781
2518
  constantNumericComplex,
2782
2519
  constantOtherSymbol,
@@ -2801,55 +2538,55 @@ var RubyHighlightRules = function() {
2801
2538
  var tokens = value.split(this.splitRegex);
2802
2539
  stack.push(next, tokens[3]);
2803
2540
  return [
2804
- {type: "constant", value: tokens[1]},
2805
- {type: "string", value: tokens[2]},
2806
- {type: "support.class", value: tokens[3]},
2807
- {type: "string", value: tokens[4]}
2541
+ { type: "constant", value: tokens[1] },
2542
+ { type: "string", value: tokens[2] },
2543
+ { type: "support.class", value: tokens[3] },
2544
+ { type: "string", value: tokens[4] }
2808
2545
  ];
2809
2546
  },
2810
2547
  regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",
2811
2548
  rules: {
2812
2549
  heredoc: [{
2813
- onMatch: function(value, currentState, stack) {
2814
- if (value === stack[1]) {
2815
- stack.shift();
2816
- stack.shift();
2817
- this.next = stack[0] || "start";
2818
- return "support.class";
2819
- }
2820
- this.next = "";
2821
- return "string";
2822
- },
2823
- regex: ".*$",
2824
- next: "start"
2825
- }],
2550
+ onMatch: function (value, currentState, stack) {
2551
+ if (value === stack[1]) {
2552
+ stack.shift();
2553
+ stack.shift();
2554
+ this.next = stack[0] || "start";
2555
+ return "support.class";
2556
+ }
2557
+ this.next = "";
2558
+ return "string";
2559
+ },
2560
+ regex: ".*$",
2561
+ next: "start"
2562
+ }],
2826
2563
  indentedHeredoc: [{
2827
- token: "string",
2828
- regex: "^ +"
2829
- }, {
2830
- onMatch: function(value, currentState, stack) {
2831
- if (value === stack[1]) {
2832
- stack.shift();
2833
- stack.shift();
2834
- this.next = stack[0] || "start";
2835
- return "support.class";
2836
- }
2837
- this.next = "";
2838
- return "string";
2839
- },
2840
- regex: ".*$",
2841
- next: "start"
2842
- }]
2564
+ token: "string",
2565
+ regex: "^ +"
2566
+ }, {
2567
+ onMatch: function (value, currentState, stack) {
2568
+ if (value === stack[1]) {
2569
+ stack.shift();
2570
+ stack.shift();
2571
+ this.next = stack[0] || "start";
2572
+ return "support.class";
2573
+ }
2574
+ this.next = "";
2575
+ return "string";
2576
+ },
2577
+ regex: ".*$",
2578
+ next: "start"
2579
+ }]
2843
2580
  }
2844
2581
  }, {
2845
2582
  regex: "$",
2846
2583
  token: "empty",
2847
- next: function(currentState, stack) {
2584
+ next: function (currentState, stack) {
2848
2585
  if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
2849
2586
  return stack[0];
2850
2587
  return currentState;
2851
2588
  }
2852
- }, {
2589
+ }, {
2853
2590
  token: "keyword.operator",
2854
2591
  regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"
2855
2592
  }, {
@@ -2858,7 +2595,7 @@ var RubyHighlightRules = function() {
2858
2595
  }, {
2859
2596
  token: "paren.rparen",
2860
2597
  regex: "[\\])}]",
2861
- onMatch: function(value, currentState, stack) {
2598
+ onMatch: function (value, currentState, stack) {
2862
2599
  this.next = '';
2863
2600
  if (value == "}" && stack.length > 1 && stack[1] != "start") {
2864
2601
  stack.shift();
@@ -2876,166 +2613,166 @@ var RubyHighlightRules = function() {
2876
2613
  ],
2877
2614
  "comment": [
2878
2615
  {
2879
- token: "comment.multiline", // closing comment
2616
+ token: "comment.multiline",
2880
2617
  regex: "^=end(?=$|\\s.*$)",
2881
2618
  next: "start"
2882
2619
  }, {
2883
- token: "comment", // comment spanning whole line
2620
+ token: "comment",
2884
2621
  regex: ".+"
2885
2622
  }
2886
2623
  ],
2887
2624
  "qStateWithInterpolation": [{
2888
- token: "string.start",// excluded nested |^% due to difficulty in realization
2889
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2890
- if (stack.length && val === stack[0]) {
2891
- stack.unshift(val, state);
2892
- return this.token;
2625
+ token: "string.start",
2626
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2627
+ if (stack.length && val === stack[0]) {
2628
+ stack.unshift(val, state);
2629
+ return this.token;
2630
+ }
2631
+ return "string";
2893
2632
  }
2894
- return "string";
2895
- }
2896
- }, {
2897
- token: "constant.language.escape",
2898
- regex: escapedChars
2899
- }, {
2900
- token: "constant.language.escape",
2901
- regex: /\\./
2902
- }, {
2903
- token: "paren.start",
2904
- regex: /#{/,
2905
- push: "start"
2906
- }, {
2907
- token: "string.end",
2908
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2909
- if (stack.length && val === closeParen[stack[0]]) {
2910
- stack.shift();
2911
- this.next = stack.shift();
2912
- return this.token;
2633
+ }, {
2634
+ token: "constant.language.escape",
2635
+ regex: escapedChars
2636
+ }, {
2637
+ token: "constant.language.escape",
2638
+ regex: /\\./
2639
+ }, {
2640
+ token: "paren.start",
2641
+ regex: /#{/,
2642
+ push: "start"
2643
+ }, {
2644
+ token: "string.end",
2645
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2646
+ if (stack.length && val === closeParen[stack[0]]) {
2647
+ stack.shift();
2648
+ this.next = stack.shift();
2649
+ return this.token;
2650
+ }
2651
+ this.next = '';
2652
+ return "string";
2913
2653
  }
2914
- this.next = '';
2915
- return "string";
2916
- }
2917
- }, {
2918
- defaultToken: "string"
2919
- }],
2654
+ }, {
2655
+ defaultToken: "string"
2656
+ }],
2920
2657
  "qStateWithoutInterpolation": [{
2921
- token: "string.start",// excluded nested |^% due to difficulty in realization
2922
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2923
- if (stack.length && val === stack[0]) {
2924
- stack.unshift(val, state);
2925
- return this.token;
2658
+ token: "string.start",
2659
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2660
+ if (stack.length && val === stack[0]) {
2661
+ stack.unshift(val, state);
2662
+ return this.token;
2663
+ }
2664
+ return "string";
2926
2665
  }
2927
- return "string";
2928
- }
2929
- }, {
2930
- token: "constant.language.escape",
2931
- regex: /\\['\\]/
2932
- }, {
2933
- token: "constant.language.escape",
2934
- regex: /\\./
2935
- }, {
2936
- token: "string.end",
2937
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2938
- if (stack.length && val === closeParen[stack[0]]) {
2939
- stack.shift();
2940
- this.next = stack.shift();
2941
- return this.token;
2666
+ }, {
2667
+ token: "constant.language.escape",
2668
+ regex: /\\['\\]/
2669
+ }, {
2670
+ token: "constant.language.escape",
2671
+ regex: /\\./
2672
+ }, {
2673
+ token: "string.end",
2674
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2675
+ if (stack.length && val === closeParen[stack[0]]) {
2676
+ stack.shift();
2677
+ this.next = stack.shift();
2678
+ return this.token;
2679
+ }
2680
+ this.next = '';
2681
+ return "string";
2942
2682
  }
2943
- this.next = '';
2944
- return "string";
2945
- }
2946
- }, {
2947
- defaultToken: "string"
2948
- }],
2683
+ }, {
2684
+ defaultToken: "string"
2685
+ }],
2949
2686
  "sStateWithoutInterpolation": [{
2950
- token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2951
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2952
- if (stack.length && val === stack[0]) {
2953
- stack.unshift(val, state);
2954
- return this.token;
2687
+ token: "constant.other.symbol.ruby",
2688
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2689
+ if (stack.length && val === stack[0]) {
2690
+ stack.unshift(val, state);
2691
+ return this.token;
2692
+ }
2693
+ return "constant.other.symbol.ruby";
2955
2694
  }
2956
- return "constant.other.symbol.ruby";
2957
- }
2958
- }, {
2959
- token: "constant.other.symbol.ruby",
2960
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2961
- if (stack.length && val === closeParen[stack[0]]) {
2962
- stack.shift();
2963
- this.next = stack.shift();
2964
- return this.token;
2695
+ }, {
2696
+ token: "constant.other.symbol.ruby",
2697
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2698
+ if (stack.length && val === closeParen[stack[0]]) {
2699
+ stack.shift();
2700
+ this.next = stack.shift();
2701
+ return this.token;
2702
+ }
2703
+ this.next = '';
2704
+ return "constant.other.symbol.ruby";
2965
2705
  }
2966
- this.next = '';
2967
- return "constant.other.symbol.ruby";
2968
- }
2969
- }, {
2970
- defaultToken: "constant.other.symbol.ruby"
2971
- }],
2706
+ }, {
2707
+ defaultToken: "constant.other.symbol.ruby"
2708
+ }],
2972
2709
  "sStateWithInterpolation": [{
2973
- token: "constant.other.symbol.ruby",// excluded nested |^% due to difficulty in realization
2974
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2975
- if (stack.length && val === stack[0]) {
2976
- stack.unshift(val, state);
2977
- return this.token;
2710
+ token: "constant.other.symbol.ruby",
2711
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2712
+ if (stack.length && val === stack[0]) {
2713
+ stack.unshift(val, state);
2714
+ return this.token;
2715
+ }
2716
+ return "constant.other.symbol.ruby";
2978
2717
  }
2979
- return "constant.other.symbol.ruby";
2980
- }
2981
- }, {
2982
- token: "constant.language.escape",
2983
- regex: escapedChars
2984
- }, {
2985
- token: "constant.language.escape",
2986
- regex: /\\./
2987
- }, {
2988
- token: "paren.start",
2989
- regex: /#{/,
2990
- push: "start"
2991
- }, {
2992
- token: "constant.other.symbol.ruby",
2993
- regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2994
- if (stack.length && val === closeParen[stack[0]]) {
2995
- stack.shift();
2996
- this.next = stack.shift();
2997
- return this.token;
2718
+ }, {
2719
+ token: "constant.language.escape",
2720
+ regex: escapedChars
2721
+ }, {
2722
+ token: "constant.language.escape",
2723
+ regex: /\\./
2724
+ }, {
2725
+ token: "paren.start",
2726
+ regex: /#{/,
2727
+ push: "start"
2728
+ }, {
2729
+ token: "constant.other.symbol.ruby",
2730
+ regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) {
2731
+ if (stack.length && val === closeParen[stack[0]]) {
2732
+ stack.shift();
2733
+ this.next = stack.shift();
2734
+ return this.token;
2735
+ }
2736
+ this.next = '';
2737
+ return "constant.other.symbol.ruby";
2998
2738
  }
2999
- this.next = '';
3000
- return "constant.other.symbol.ruby";
3001
- }
3002
- }, {
3003
- defaultToken: "constant.other.symbol.ruby"
3004
- }],
2739
+ }, {
2740
+ defaultToken: "constant.other.symbol.ruby"
2741
+ }],
3005
2742
  "rState": [{
3006
- token: "string.regexp",// excluded nested |^% due to difficulty in realization
3007
- regex: /[(\[<{]/, onMatch: function (val, state, stack) {
3008
- if (stack.length && val === stack[0]) {
3009
- stack.unshift(val, state);
3010
- return this.token;
2743
+ token: "string.regexp",
2744
+ regex: /[(\[<{]/, onMatch: function (val, state, stack) {
2745
+ if (stack.length && val === stack[0]) {
2746
+ stack.unshift(val, state);
2747
+ return this.token;
2748
+ }
2749
+ return "constant.language.escape";
3011
2750
  }
3012
- return "constant.language.escape";
3013
- }
3014
- }, {
3015
- token: "paren.start",
3016
- regex: /#{/,
3017
- push: "start"
3018
- }, {
3019
- token: "string.regexp",
3020
- regex: /\//
3021
- }, {
3022
- token: "string.regexp",
3023
- regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) {
3024
- if (stack.length && val[0] === closeParen[stack[0]]) {
3025
- stack.shift();
3026
- this.next = stack.shift();
3027
- return this.token;
2751
+ }, {
2752
+ token: "paren.start",
2753
+ regex: /#{/,
2754
+ push: "start"
2755
+ }, {
2756
+ token: "string.regexp",
2757
+ regex: /\//
2758
+ }, {
2759
+ token: "string.regexp",
2760
+ regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) {
2761
+ if (stack.length && val[0] === closeParen[stack[0]]) {
2762
+ stack.shift();
2763
+ this.next = stack.shift();
2764
+ return this.token;
2765
+ }
2766
+ this.next = '';
2767
+ return "constant.language.escape";
3028
2768
  }
3029
- this.next = '';
3030
- return "constant.language.escape";
3031
- }
3032
- },
3033
- {include: "regex"},
2769
+ },
2770
+ { include: "regex" },
3034
2771
  {
3035
2772
  defaultToken: "string.regexp"
3036
2773
  }],
3037
2774
  "regex": [
3038
- {// character classes
2775
+ {
3039
2776
  token: "regexp.keyword",
3040
2777
  regex: /\\[wWdDhHsS]/
3041
2778
  }, {
@@ -3050,17 +2787,17 @@ var RubyHighlightRules = function() {
3050
2787
  }, {
3051
2788
  token: ["constant.language.escape", "invalid", "constant.language.escape"],
3052
2789
  regex: /(\\p{\^?)([^/]*)(})/
3053
- }, {// escapes
2790
+ }, {
3054
2791
  token: "regexp.keyword.operator",
3055
2792
  regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
3056
- }, {// flag
2793
+ }, {
3057
2794
  token: "string.regexp",
3058
2795
  regex: /[/][imxouesn]*/,
3059
2796
  next: "start"
3060
- }, {// invalid operators
2797
+ }, {
3061
2798
  token: "invalid",
3062
2799
  regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
3063
- }, {// operators
2800
+ }, {
3064
2801
  token: "constant.language.escape",
3065
2802
  regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
3066
2803
  }, {
@@ -3100,29 +2837,21 @@ var RubyHighlightRules = function() {
3100
2837
  }
3101
2838
  ]
3102
2839
  };
3103
-
3104
2840
  this.normalizeRules();
3105
2841
  };
3106
-
3107
2842
  oop.inherits(RubyHighlightRules, TextHighlightRules);
3108
-
3109
2843
  exports.RubyHighlightRules = RubyHighlightRules;
3110
- });
3111
2844
 
3112
- ace.define("ace/mode/folding/ruby",[], function (require, exports, module) {
3113
- "use strict";
2845
+ });
3114
2846
 
2847
+ ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict";
3115
2848
  var oop = require("../../lib/oop");
3116
2849
  var BaseFoldMode = require("./fold_mode").FoldMode;
3117
2850
  var Range = require("../../range").Range;
3118
2851
  var TokenIterator = require("../../token_iterator").TokenIterator;
3119
-
3120
-
3121
2852
  var FoldMode = exports.FoldMode = function () {
3122
2853
  };
3123
-
3124
2854
  oop.inherits(FoldMode, BaseFoldMode);
3125
-
3126
2855
  (function () {
3127
2856
  this.indentKeywords = {
3128
2857
  "class": 1,
@@ -3145,15 +2874,12 @@ oop.inherits(FoldMode, BaseFoldMode);
3145
2874
  "=begin": 1,
3146
2875
  "=end": -1
3147
2876
  };
3148
-
3149
2877
  this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/;
3150
2878
  this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/;
3151
-
3152
2879
  this.getFoldWidget = function (session, foldStyle, row) {
3153
2880
  var line = session.getLine(row);
3154
2881
  var isStart = this.foldingStartMarker.test(line);
3155
2882
  var isEnd = this.foldingStopMarker.test(line);
3156
-
3157
2883
  if (isStart && !isEnd) {
3158
2884
  var match = line.match(this.foldingStartMarker);
3159
2885
  if (match[1]) {
@@ -3165,7 +2891,6 @@ oop.inherits(FoldMode, BaseFoldMode);
3165
2891
  return;
3166
2892
  }
3167
2893
  }
3168
-
3169
2894
  if (match[1] == "when") {
3170
2895
  if (/\sthen\s/.test(line) === true) {
3171
2896
  return;
@@ -3173,60 +2898,55 @@ oop.inherits(FoldMode, BaseFoldMode);
3173
2898
  }
3174
2899
  if (session.getTokenAt(row, match.index + 2).type === "keyword")
3175
2900
  return "start";
3176
- } else if (match[3]) {
2901
+ }
2902
+ else if (match[3]) {
3177
2903
  if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3178
2904
  return "start";
3179
- } else {
2905
+ }
2906
+ else {
3180
2907
  return "start";
3181
2908
  }
3182
2909
  }
3183
2910
  if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd)
3184
2911
  return "";
3185
-
3186
2912
  var match = line.match(this.foldingStopMarker);
3187
2913
  if (match[3] === "end") {
3188
2914
  if (session.getTokenAt(row, match.index + 1).type === "keyword")
3189
2915
  return "end";
3190
- } else if (match[1]) {
2916
+ }
2917
+ else if (match[1]) {
3191
2918
  if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3192
2919
  return "end";
3193
- } else
2920
+ }
2921
+ else
3194
2922
  return "end";
3195
2923
  };
3196
-
3197
2924
  this.getFoldWidgetRange = function (session, foldStyle, row) {
3198
2925
  var line = session.doc.getLine(row);
3199
2926
  var match = this.foldingStartMarker.exec(line);
3200
2927
  if (match) {
3201
2928
  if (match[1] || match[3])
3202
2929
  return this.rubyBlock(session, row, match.index + 2);
3203
-
3204
2930
  return this.openingBracketBlock(session, "{", row, match.index);
3205
2931
  }
3206
-
3207
2932
  var match = this.foldingStopMarker.exec(line);
3208
2933
  if (match) {
3209
2934
  if (match[3] === "end") {
3210
2935
  if (session.getTokenAt(row, match.index + 1).type === "keyword")
3211
2936
  return this.rubyBlock(session, row, match.index + 1);
3212
2937
  }
3213
-
3214
2938
  if (match[1] === "=end") {
3215
2939
  if (session.getTokenAt(row, match.index + 1).type === "comment.multiline")
3216
2940
  return this.rubyBlock(session, row, match.index + 1);
3217
2941
  }
3218
-
3219
2942
  return this.closingBracketBlock(session, "}", row, match.index + match[0].length);
3220
2943
  }
3221
2944
  };
3222
-
3223
2945
  this.rubyBlock = function (session, row, column, tokenRange) {
3224
2946
  var stream = new TokenIterator(session, row, column);
3225
-
3226
2947
  var token = stream.getCurrentToken();
3227
2948
  if (!token || (token.type != "keyword" && token.type != "comment.multiline"))
3228
2949
  return;
3229
-
3230
2950
  var val = token.value;
3231
2951
  var line = session.getLine(row);
3232
2952
  switch (token.value) {
@@ -3260,16 +2980,13 @@ oop.inherits(FoldMode, BaseFoldMode);
3260
2980
  var dir = this.indentKeywords[val];
3261
2981
  break;
3262
2982
  }
3263
-
3264
2983
  var stack = [val];
3265
2984
  if (!dir)
3266
2985
  return;
3267
-
3268
2986
  var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length;
3269
2987
  var startRow = row;
3270
2988
  var ranges = [];
3271
2989
  ranges.push(stream.getCurrentTokenRange());
3272
-
3273
2990
  stream.step = dir === -1 ? stream.stepBackward : stream.stepForward;
3274
2991
  if (token.type == "comment.multiline") {
3275
2992
  while (token = stream.step()) {
@@ -3280,13 +2997,15 @@ oop.inherits(FoldMode, BaseFoldMode);
3280
2997
  if (token.value == "=end") {
3281
2998
  break;
3282
2999
  }
3283
- } else {
3000
+ }
3001
+ else {
3284
3002
  if (token.value == "=begin") {
3285
3003
  break;
3286
3004
  }
3287
3005
  }
3288
3006
  }
3289
- } else {
3007
+ }
3008
+ else {
3290
3009
  while (token = stream.step()) {
3291
3010
  var ignore = false;
3292
3011
  if (token.type !== "keyword")
@@ -3327,10 +3046,10 @@ oop.inherits(FoldMode, BaseFoldMode);
3327
3046
  }
3328
3047
  break;
3329
3048
  }
3330
-
3331
3049
  if (level > 0) {
3332
3050
  stack.unshift(token.value);
3333
- } else if (level <= 0 && ignore === false) {
3051
+ }
3052
+ else if (level <= 0 && ignore === false) {
3334
3053
  stack.shift();
3335
3054
  if (!stack.length) {
3336
3055
  if ((val == "while" || val == "until" || val == "for") && token.value != "do") {
@@ -3341,73 +3060,59 @@ oop.inherits(FoldMode, BaseFoldMode);
3341
3060
  if (token.value != "do")
3342
3061
  break;
3343
3062
  }
3344
-
3345
3063
  if (level === 0) {
3346
3064
  stack.unshift(token.value);
3347
3065
  }
3348
3066
  }
3349
3067
  }
3350
3068
  }
3351
-
3352
3069
  if (!token)
3353
3070
  return null;
3354
-
3355
3071
  if (tokenRange) {
3356
3072
  ranges.push(stream.getCurrentTokenRange());
3357
3073
  return ranges;
3358
3074
  }
3359
-
3360
3075
  var row = stream.getCurrentTokenRow();
3361
3076
  if (dir === -1) {
3362
3077
  if (token.type === "comment.multiline") {
3363
3078
  var endColumn = 6;
3364
- } else {
3079
+ }
3080
+ else {
3365
3081
  var endColumn = session.getLine(row).length;
3366
3082
  }
3367
3083
  return new Range(row, endColumn, startRow - 1, startColumn);
3368
- } else
3084
+ }
3085
+ else
3369
3086
  return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length);
3370
3087
  };
3371
-
3372
3088
  }).call(FoldMode.prototype);
3373
3089
 
3374
3090
  });
3375
3091
 
3376
- ace.define("ace/mode/ruby",[], function(require, exports, module) {
3377
- "use strict";
3378
-
3092
+ ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"], function(require, exports, module){"use strict";
3379
3093
  var oop = require("../lib/oop");
3380
3094
  var TextMode = require("./text").Mode;
3381
3095
  var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules;
3382
3096
  var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
3383
3097
  var Range = require("../range").Range;
3384
- var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
3385
3098
  var FoldMode = require("./folding/ruby").FoldMode;
3386
-
3387
- var Mode = function() {
3099
+ var Mode = function () {
3388
3100
  this.HighlightRules = RubyHighlightRules;
3389
3101
  this.$outdent = new MatchingBraceOutdent();
3390
- this.$behaviour = new CstyleBehaviour();
3102
+ this.$behaviour = this.$defaultBehaviour;
3391
3103
  this.foldingRules = new FoldMode();
3392
3104
  this.indentKeywords = this.foldingRules.indentKeywords;
3393
3105
  };
3394
3106
  oop.inherits(Mode, TextMode);
3395
-
3396
- (function() {
3397
-
3398
-
3107
+ (function () {
3399
3108
  this.lineCommentStart = "#";
3400
-
3401
- this.getNextLineIndent = function(state, line, tab) {
3109
+ this.getNextLineIndent = function (state, line, tab) {
3402
3110
  var indent = this.$getIndent(line);
3403
-
3404
3111
  var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
3405
3112
  var tokens = tokenizedLine.tokens;
3406
-
3407
3113
  if (tokens.length && tokens[tokens.length - 1].type == "comment") {
3408
3114
  return indent;
3409
3115
  }
3410
-
3411
3116
  if (state == "start") {
3412
3117
  var match = line.match(/^.*[\{\(\[]\s*$/);
3413
3118
  var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/);
@@ -3417,15 +3122,12 @@ oop.inherits(Mode, TextMode);
3417
3122
  indent += tab;
3418
3123
  }
3419
3124
  }
3420
-
3421
3125
  return indent;
3422
3126
  };
3423
-
3424
- this.checkOutdent = function(state, line, input) {
3127
+ this.checkOutdent = function (state, line, input) {
3425
3128
  return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
3426
3129
  };
3427
-
3428
- this.autoOutdent = function(state, session, row) {
3130
+ this.autoOutdent = function (state, session, row) {
3429
3131
  var line = session.getLine(row);
3430
3132
  if (/}/.test(line))
3431
3133
  return this.$outdent.autoOutdent(session, row);
@@ -3438,77 +3140,61 @@ oop.inherits(Mode, TextMode);
3438
3140
  session.remove(new Range(row, indent.length - tab.length, row, indent.length));
3439
3141
  }
3440
3142
  };
3441
-
3442
- this.getMatching = function(session, row, column) {
3143
+ this.getMatching = function (session, row, column) {
3443
3144
  if (row == undefined) {
3444
3145
  var pos = session.selection.lead;
3445
3146
  column = pos.column;
3446
3147
  row = pos.row;
3447
3148
  }
3448
-
3449
3149
  var startToken = session.getTokenAt(row, column);
3450
3150
  if (startToken && startToken.value in this.indentKeywords)
3451
3151
  return this.foldingRules.rubyBlock(session, row, column, true);
3452
3152
  };
3453
-
3454
3153
  this.$id = "ace/mode/ruby";
3455
3154
  this.snippetFileId = "ace/snippets/ruby";
3456
3155
  }).call(Mode.prototype);
3457
-
3458
3156
  exports.Mode = Mode;
3459
- });
3460
3157
 
3461
- ace.define("ace/mode/ejs",[], function(require, exports, module) {
3462
- "use strict";
3158
+ });
3463
3159
 
3160
+ ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module){"use strict";
3464
3161
  var oop = require("../lib/oop");
3465
3162
  var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
3466
3163
  var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
3467
-
3468
- var EjsHighlightRules = function(start, end) {
3164
+ var EjsHighlightRules = function (start, end) {
3469
3165
  HtmlHighlightRules.call(this);
3470
-
3471
3166
  if (!start)
3472
3167
  start = "(?:<%|<\\?|{{)";
3473
3168
  if (!end)
3474
3169
  end = "(?:%>|\\?>|}})";
3475
-
3476
3170
  for (var i in this.$rules) {
3477
3171
  this.$rules[i].unshift({
3478
- token : "markup.list.meta.tag",
3479
- regex : start + "(?![>}])[-=]?",
3480
- push : "ejs-start"
3172
+ token: "markup.list.meta.tag",
3173
+ regex: start + "(?![>}])[-=]?",
3174
+ push: "ejs-start"
3481
3175
  });
3482
3176
  }
3483
-
3484
- this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "ejs-", [{
3485
- token : "markup.list.meta.tag",
3486
- regex : "-?" + end,
3487
- next : "pop"
3488
- }, {
3489
- token: "comment",
3490
- regex: "//.*?" + end,
3491
- next: "pop"
3492
- }]);
3493
-
3177
+ this.embedRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "ejs-", [{
3178
+ token: "markup.list.meta.tag",
3179
+ regex: "-?" + end,
3180
+ next: "pop"
3181
+ }, {
3182
+ token: "comment",
3183
+ regex: "//.*?" + end,
3184
+ next: "pop"
3185
+ }]);
3494
3186
  this.normalizeRules();
3495
3187
  };
3496
-
3497
-
3498
3188
  oop.inherits(EjsHighlightRules, HtmlHighlightRules);
3499
-
3500
3189
  exports.EjsHighlightRules = EjsHighlightRules;
3501
-
3502
-
3503
3190
  var oop = require("../lib/oop");
3504
3191
  var HtmlMode = require("./html").Mode;
3505
3192
  var JavaScriptMode = require("./javascript").Mode;
3506
3193
  var CssMode = require("./css").Mode;
3507
3194
  var RubyMode = require("./ruby").Mode;
3508
-
3509
- var Mode = function() {
3195
+ var Mode = function () {
3510
3196
  HtmlMode.call(this);
3511
- this.HighlightRules = EjsHighlightRules;
3197
+ this.HighlightRules = EjsHighlightRules;
3512
3198
  this.createModeDelegates({
3513
3199
  "js-": JavaScriptMode,
3514
3200
  "css-": CssMode,
@@ -3516,13 +3202,11 @@ var Mode = function() {
3516
3202
  });
3517
3203
  };
3518
3204
  oop.inherits(Mode, HtmlMode);
3519
-
3520
- (function() {
3521
-
3205
+ (function () {
3522
3206
  this.$id = "ace/mode/ejs";
3523
3207
  }).call(Mode.prototype);
3524
-
3525
3208
  exports.Mode = Mode;
3209
+
3526
3210
  }); (function() {
3527
3211
  ace.require(["ace/mode/ejs"], function(m) {
3528
3212
  if (typeof module == "object" && typeof exports == "object" && module) {