bedrock_sass 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (534) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -5
  3. data/assets/_vendor/ace/ace.js +21635 -0
  4. data/assets/_vendor/ace/ext-beautify.js +318 -0
  5. data/assets/_vendor/ace/ext-elastic_tabstops_lite.js +277 -0
  6. data/assets/_vendor/ace/ext-emmet.js +1226 -0
  7. data/assets/_vendor/ace/ext-error_marker.js +10 -0
  8. data/assets/_vendor/ace/ext-keybinding_menu.js +189 -0
  9. data/assets/_vendor/ace/ext-language_tools.js +1997 -0
  10. data/assets/_vendor/ace/ext-linking.js +65 -0
  11. data/assets/_vendor/ace/ext-modelist.js +228 -0
  12. data/assets/_vendor/ace/ext-options.js +750 -0
  13. data/assets/_vendor/ace/ext-rtl.js +110 -0
  14. data/assets/_vendor/ace/ext-searchbox.js +512 -0
  15. data/assets/_vendor/ace/ext-settings_menu.js +771 -0
  16. data/assets/_vendor/ace/ext-spellcheck.js +75 -0
  17. data/assets/_vendor/ace/ext-split.js +208 -0
  18. data/assets/_vendor/ace/ext-static_highlight.js +226 -0
  19. data/assets/_vendor/ace/ext-statusbar.js +57 -0
  20. data/assets/_vendor/ace/ext-textarea.js +567 -0
  21. data/assets/_vendor/ace/ext-themelist.js +67 -0
  22. data/assets/_vendor/ace/ext-whitespace.js +210 -0
  23. data/assets/_vendor/ace/keybinding-emacs.js +1165 -0
  24. data/assets/_vendor/ace/keybinding-vim.js +5673 -0
  25. data/assets/_vendor/ace/mode-abap.js +222 -0
  26. data/assets/_vendor/ace/mode-abc.js +267 -0
  27. data/assets/_vendor/ace/mode-actionscript.js +274 -0
  28. data/assets/_vendor/ace/mode-ada.js +138 -0
  29. data/assets/_vendor/ace/mode-apache_conf.js +363 -0
  30. data/assets/_vendor/ace/mode-applescript.js +279 -0
  31. data/assets/_vendor/ace/mode-asciidoc.js +349 -0
  32. data/assets/_vendor/ace/mode-asl.js +422 -0
  33. data/assets/_vendor/ace/mode-assembly_x86.js +193 -0
  34. data/assets/_vendor/ace/mode-autohotkey.js +243 -0
  35. data/assets/_vendor/ace/mode-batchfile.js +230 -0
  36. data/assets/_vendor/ace/mode-bro.js +334 -0
  37. data/assets/_vendor/ace/mode-c9search.js +294 -0
  38. data/assets/_vendor/ace/mode-c_cpp.js +502 -0
  39. data/assets/_vendor/ace/mode-cirru.js +211 -0
  40. data/assets/_vendor/ace/mode-clojure.js +314 -0
  41. data/assets/_vendor/ace/mode-cobol.js +102 -0
  42. data/assets/_vendor/ace/mode-coffee.js +400 -0
  43. data/assets/_vendor/ace/mode-coldfusion.js +2596 -0
  44. data/assets/_vendor/ace/mode-csharp.js +502 -0
  45. data/assets/_vendor/ace/mode-csound_document.js +3749 -0
  46. data/assets/_vendor/ace/mode-csound_orchestra.js +2687 -0
  47. data/assets/_vendor/ace/mode-csound_score.js +454 -0
  48. data/assets/_vendor/ace/mode-csp.js +60 -0
  49. data/assets/_vendor/ace/mode-css.js +723 -0
  50. data/assets/_vendor/ace/mode-curly.js +2564 -0
  51. data/assets/_vendor/ace/mode-d.js +520 -0
  52. data/assets/_vendor/ace/mode-dart.js +703 -0
  53. data/assets/_vendor/ace/mode-diff.js +146 -0
  54. data/assets/_vendor/ace/mode-django.js +2594 -0
  55. data/assets/_vendor/ace/mode-dockerfile.js +498 -0
  56. data/assets/_vendor/ace/mode-dot.js +418 -0
  57. data/assets/_vendor/ace/mode-drools.js +496 -0
  58. data/assets/_vendor/ace/mode-edifact.js +165 -0
  59. data/assets/_vendor/ace/mode-eiffel.js +136 -0
  60. data/assets/_vendor/ace/mode-ejs.js +3026 -0
  61. data/assets/_vendor/ace/mode-elixir.js +501 -0
  62. data/assets/_vendor/ace/mode-elm.js +307 -0
  63. data/assets/_vendor/ace/mode-erlang.js +1009 -0
  64. data/assets/_vendor/ace/mode-forth.js +297 -0
  65. data/assets/_vendor/ace/mode-fortran.js +431 -0
  66. data/assets/_vendor/ace/mode-fsharp.js +314 -0
  67. data/assets/_vendor/ace/mode-ftl.js +1192 -0
  68. data/assets/_vendor/ace/mode-gcode.js +94 -0
  69. data/assets/_vendor/ace/mode-gherkin.js +172 -0
  70. data/assets/_vendor/ace/mode-gitignore.js +60 -0
  71. data/assets/_vendor/ace/mode-glsl.js +579 -0
  72. data/assets/_vendor/ace/mode-gobstones.js +929 -0
  73. data/assets/_vendor/ace/mode-golang.js +414 -0
  74. data/assets/_vendor/ace/mode-graphqlschema.js +214 -0
  75. data/assets/_vendor/ace/mode-groovy.js +986 -0
  76. data/assets/_vendor/ace/mode-haml.js +1555 -0
  77. data/assets/_vendor/ace/mode-handlebars.js +2622 -0
  78. data/assets/_vendor/ace/mode-haskell.js +379 -0
  79. data/assets/_vendor/ace/mode-haskell_cabal.js +142 -0
  80. data/assets/_vendor/ace/mode-haxe.js +386 -0
  81. data/assets/_vendor/ace/mode-hjson.js +353 -0
  82. data/assets/_vendor/ace/mode-html.js +2509 -0
  83. data/assets/_vendor/ace/mode-html_elixir.js +3087 -0
  84. data/assets/_vendor/ace/mode-html_ruby.js +3043 -0
  85. data/assets/_vendor/ace/mode-ini.js +163 -0
  86. data/assets/_vendor/ace/mode-io.js +253 -0
  87. data/assets/_vendor/ace/mode-jack.js +347 -0
  88. data/assets/_vendor/ace/mode-jade.js +2126 -0
  89. data/assets/_vendor/ace/mode-java.js +975 -0
  90. data/assets/_vendor/ace/mode-javascript.js +797 -0
  91. data/assets/_vendor/ace/mode-json.js +327 -0
  92. data/assets/_vendor/ace/mode-jsoniq.js +4940 -0
  93. data/assets/_vendor/ace/mode-jsp.js +1430 -0
  94. data/assets/_vendor/ace/mode-jssm.js +325 -0
  95. data/assets/_vendor/ace/mode-jsx.js +412 -0
  96. data/assets/_vendor/ace/mode-julia.js +303 -0
  97. data/assets/_vendor/ace/mode-kotlin.js +795 -0
  98. data/assets/_vendor/ace/mode-latex.js +297 -0
  99. data/assets/_vendor/ace/mode-less.js +841 -0
  100. data/assets/_vendor/ace/mode-liquid.js +1193 -0
  101. data/assets/_vendor/ace/mode-lisp.js +112 -0
  102. data/assets/_vendor/ace/mode-livescript.js +280 -0
  103. data/assets/_vendor/ace/mode-logiql.js +317 -0
  104. data/assets/_vendor/ace/mode-lsl.js +343 -0
  105. data/assets/_vendor/ace/mode-lua.js +432 -0
  106. data/assets/_vendor/ace/mode-luapage.js +3007 -0
  107. data/assets/_vendor/ace/mode-lucene.js +87 -0
  108. data/assets/_vendor/ace/mode-makefile.js +410 -0
  109. data/assets/_vendor/ace/mode-markdown.js +3189 -0
  110. data/assets/_vendor/ace/mode-mask.js +1802 -0
  111. data/assets/_vendor/ace/mode-matlab.js +264 -0
  112. data/assets/_vendor/ace/mode-maze.js +291 -0
  113. data/assets/_vendor/ace/mode-mel.js +263 -0
  114. data/assets/_vendor/ace/mode-mixal.js +123 -0
  115. data/assets/_vendor/ace/mode-mushcode.js +681 -0
  116. data/assets/_vendor/ace/mode-mysql.js +168 -0
  117. data/assets/_vendor/ace/mode-nix.js +646 -0
  118. data/assets/_vendor/ace/mode-nsis.js +312 -0
  119. data/assets/_vendor/ace/mode-objectivec.js +739 -0
  120. data/assets/_vendor/ace/mode-ocaml.js +422 -0
  121. data/assets/_vendor/ace/mode-pascal.js +205 -0
  122. data/assets/_vendor/ace/mode-perl.js +380 -0
  123. data/assets/_vendor/ace/mode-pgsql.js +1508 -0
  124. data/assets/_vendor/ace/mode-php.js +13088 -0
  125. data/assets/_vendor/ace/mode-php_laravel_blade.js +13289 -0
  126. data/assets/_vendor/ace/mode-pig.js +310 -0
  127. data/assets/_vendor/ace/mode-plain_text.js +33 -0
  128. data/assets/_vendor/ace/mode-powershell.js +418 -0
  129. data/assets/_vendor/ace/mode-praat.js +478 -0
  130. data/assets/_vendor/ace/mode-prolog.js +371 -0
  131. data/assets/_vendor/ace/mode-properties.js +81 -0
  132. data/assets/_vendor/ace/mode-protobuf.js +592 -0
  133. data/assets/_vendor/ace/mode-puppet.js +370 -0
  134. data/assets/_vendor/ace/mode-python.js +273 -0
  135. data/assets/_vendor/ace/mode-r.js +310 -0
  136. data/assets/_vendor/ace/mode-razor.js +2869 -0
  137. data/assets/_vendor/ace/mode-rdoc.js +243 -0
  138. data/assets/_vendor/ace/mode-red.js +450 -0
  139. data/assets/_vendor/ace/mode-redshift.js +361 -0
  140. data/assets/_vendor/ace/mode-rhtml.js +2806 -0
  141. data/assets/_vendor/ace/mode-rst.js +257 -0
  142. data/assets/_vendor/ace/mode-ruby.js +497 -0
  143. data/assets/_vendor/ace/mode-rust.js +279 -0
  144. data/assets/_vendor/ace/mode-sass.js +441 -0
  145. data/assets/_vendor/ace/mode-scad.js +414 -0
  146. data/assets/_vendor/ace/mode-scala.js +982 -0
  147. data/assets/_vendor/ace/mode-scheme.js +232 -0
  148. data/assets/_vendor/ace/mode-scss.js +606 -0
  149. data/assets/_vendor/ace/mode-sh.js +447 -0
  150. data/assets/_vendor/ace/mode-sjs.js +1014 -0
  151. data/assets/_vendor/ace/mode-slim.js +4736 -0
  152. data/assets/_vendor/ace/mode-smarty.js +2635 -0
  153. data/assets/_vendor/ace/mode-snippets.js +207 -0
  154. data/assets/_vendor/ace/mode-soy_template.js +2847 -0
  155. data/assets/_vendor/ace/mode-space.js +168 -0
  156. data/assets/_vendor/ace/mode-sparql.js +320 -0
  157. data/assets/_vendor/ace/mode-sql.js +111 -0
  158. data/assets/_vendor/ace/mode-sqlserver.js +444 -0
  159. data/assets/_vendor/ace/mode-stylus.js +471 -0
  160. data/assets/_vendor/ace/mode-svg.js +1581 -0
  161. data/assets/_vendor/ace/mode-swift.js +390 -0
  162. data/assets/_vendor/ace/mode-tcl.js +383 -0
  163. data/assets/_vendor/ace/mode-terraform.js +398 -0
  164. data/assets/_vendor/ace/mode-tex.js +159 -0
  165. data/assets/_vendor/ace/mode-text.js +10 -0
  166. data/assets/_vendor/ace/mode-textile.js +150 -0
  167. data/assets/_vendor/ace/mode-toml.js +154 -0
  168. data/assets/_vendor/ace/mode-tsx.js +887 -0
  169. data/assets/_vendor/ace/mode-turtle.js +296 -0
  170. data/assets/_vendor/ace/mode-twig.js +2693 -0
  171. data/assets/_vendor/ace/mode-typescript.js +868 -0
  172. data/assets/_vendor/ace/mode-vala.js +676 -0
  173. data/assets/_vendor/ace/mode-vbscript.js +207 -0
  174. data/assets/_vendor/ace/mode-velocity.js +2790 -0
  175. data/assets/_vendor/ace/mode-verilog.js +119 -0
  176. data/assets/_vendor/ace/mode-vhdl.js +118 -0
  177. data/assets/_vendor/ace/mode-wollok.js +911 -0
  178. data/assets/_vendor/ace/mode-xml.js +677 -0
  179. data/assets/_vendor/ace/mode-xquery.js +4922 -0
  180. data/assets/_vendor/ace/mode-yaml.js +300 -0
  181. data/assets/_vendor/ace/snippets/abap.js +15 -0
  182. data/assets/_vendor/ace/snippets/abc.js +46 -0
  183. data/assets/_vendor/ace/snippets/actionscript.js +172 -0
  184. data/assets/_vendor/ace/snippets/ada.js +15 -0
  185. data/assets/_vendor/ace/snippets/apache_conf.js +15 -0
  186. data/assets/_vendor/ace/snippets/applescript.js +15 -0
  187. data/assets/_vendor/ace/snippets/asciidoc.js +15 -0
  188. data/assets/_vendor/ace/snippets/asl.js +14 -0
  189. data/assets/_vendor/ace/snippets/assembly_x86.js +15 -0
  190. data/assets/_vendor/ace/snippets/autohotkey.js +15 -0
  191. data/assets/_vendor/ace/snippets/batchfile.js +15 -0
  192. data/assets/_vendor/ace/snippets/bro.js +15 -0
  193. data/assets/_vendor/ace/snippets/c9search.js +15 -0
  194. data/assets/_vendor/ace/snippets/c_cpp.js +146 -0
  195. data/assets/_vendor/ace/snippets/cirru.js +15 -0
  196. data/assets/_vendor/ace/snippets/clojure.js +105 -0
  197. data/assets/_vendor/ace/snippets/cobol.js +15 -0
  198. data/assets/_vendor/ace/snippets/coffee.js +110 -0
  199. data/assets/_vendor/ace/snippets/coldfusion.js +15 -0
  200. data/assets/_vendor/ace/snippets/csharp.js +15 -0
  201. data/assets/_vendor/ace/snippets/csound_document.js +25 -0
  202. data/assets/_vendor/ace/snippets/csound_orchestra.js +62 -0
  203. data/assets/_vendor/ace/snippets/csound_score.js +15 -0
  204. data/assets/_vendor/ace/snippets/csp.js +15 -0
  205. data/assets/_vendor/ace/snippets/css.js +982 -0
  206. data/assets/_vendor/ace/snippets/curly.js +15 -0
  207. data/assets/_vendor/ace/snippets/d.js +15 -0
  208. data/assets/_vendor/ace/snippets/dart.js +98 -0
  209. data/assets/_vendor/ace/snippets/diff.js +26 -0
  210. data/assets/_vendor/ace/snippets/django.js +123 -0
  211. data/assets/_vendor/ace/snippets/dockerfile.js +15 -0
  212. data/assets/_vendor/ace/snippets/dot.js +15 -0
  213. data/assets/_vendor/ace/snippets/drools.js +34 -0
  214. data/assets/_vendor/ace/snippets/edifact.js +255 -0
  215. data/assets/_vendor/ace/snippets/eiffel.js +15 -0
  216. data/assets/_vendor/ace/snippets/ejs.js +15 -0
  217. data/assets/_vendor/ace/snippets/elixir.js +15 -0
  218. data/assets/_vendor/ace/snippets/elm.js +15 -0
  219. data/assets/_vendor/ace/snippets/erlang.js +175 -0
  220. data/assets/_vendor/ace/snippets/forth.js +15 -0
  221. data/assets/_vendor/ace/snippets/fortran.js +15 -0
  222. data/assets/_vendor/ace/snippets/fsharp.js +15 -0
  223. data/assets/_vendor/ace/snippets/ftl.js +15 -0
  224. data/assets/_vendor/ace/snippets/gcode.js +15 -0
  225. data/assets/_vendor/ace/snippets/gherkin.js +15 -0
  226. data/assets/_vendor/ace/snippets/gitignore.js +15 -0
  227. data/assets/_vendor/ace/snippets/glsl.js +15 -0
  228. data/assets/_vendor/ace/snippets/gobstones.js +49 -0
  229. data/assets/_vendor/ace/snippets/golang.js +15 -0
  230. data/assets/_vendor/ace/snippets/graphqlschema.js +47 -0
  231. data/assets/_vendor/ace/snippets/groovy.js +15 -0
  232. data/assets/_vendor/ace/snippets/haml.js +35 -0
  233. data/assets/_vendor/ace/snippets/handlebars.js +15 -0
  234. data/assets/_vendor/ace/snippets/haskell.js +97 -0
  235. data/assets/_vendor/ace/snippets/haskell_cabal.js +15 -0
  236. data/assets/_vendor/ace/snippets/haxe.js +15 -0
  237. data/assets/_vendor/ace/snippets/hjson.js +15 -0
  238. data/assets/_vendor/ace/snippets/html.js +870 -0
  239. data/assets/_vendor/ace/snippets/html_elixir.js +15 -0
  240. data/assets/_vendor/ace/snippets/html_ruby.js +15 -0
  241. data/assets/_vendor/ace/snippets/ini.js +15 -0
  242. data/assets/_vendor/ace/snippets/io.js +77 -0
  243. data/assets/_vendor/ace/snippets/jack.js +15 -0
  244. data/assets/_vendor/ace/snippets/jade.js +15 -0
  245. data/assets/_vendor/ace/snippets/java.js +255 -0
  246. data/assets/_vendor/ace/snippets/javascript.js +210 -0
  247. data/assets/_vendor/ace/snippets/json.js +15 -0
  248. data/assets/_vendor/ace/snippets/jsoniq.js +76 -0
  249. data/assets/_vendor/ace/snippets/jsp.js +114 -0
  250. data/assets/_vendor/ace/snippets/jssm.js +15 -0
  251. data/assets/_vendor/ace/snippets/jsx.js +15 -0
  252. data/assets/_vendor/ace/snippets/julia.js +15 -0
  253. data/assets/_vendor/ace/snippets/kotlin.js +15 -0
  254. data/assets/_vendor/ace/snippets/latex.js +15 -0
  255. data/assets/_vendor/ace/snippets/less.js +15 -0
  256. data/assets/_vendor/ace/snippets/liquid.js +15 -0
  257. data/assets/_vendor/ace/snippets/lisp.js +15 -0
  258. data/assets/_vendor/ace/snippets/livescript.js +15 -0
  259. data/assets/_vendor/ace/snippets/logiql.js +15 -0
  260. data/assets/_vendor/ace/snippets/lsl.js +1247 -0
  261. data/assets/_vendor/ace/snippets/lua.js +36 -0
  262. data/assets/_vendor/ace/snippets/luapage.js +15 -0
  263. data/assets/_vendor/ace/snippets/lucene.js +15 -0
  264. data/assets/_vendor/ace/snippets/makefile.js +19 -0
  265. data/assets/_vendor/ace/snippets/markdown.js +103 -0
  266. data/assets/_vendor/ace/snippets/mask.js +15 -0
  267. data/assets/_vendor/ace/snippets/matlab.js +15 -0
  268. data/assets/_vendor/ace/snippets/maze.js +24 -0
  269. data/assets/_vendor/ace/snippets/mel.js +15 -0
  270. data/assets/_vendor/ace/snippets/mixal.js +15 -0
  271. data/assets/_vendor/ace/snippets/mushcode.js +15 -0
  272. data/assets/_vendor/ace/snippets/mysql.js +15 -0
  273. data/assets/_vendor/ace/snippets/nix.js +15 -0
  274. data/assets/_vendor/ace/snippets/nsis.js +15 -0
  275. data/assets/_vendor/ace/snippets/objectivec.js +15 -0
  276. data/assets/_vendor/ace/snippets/ocaml.js +15 -0
  277. data/assets/_vendor/ace/snippets/pascal.js +15 -0
  278. data/assets/_vendor/ace/snippets/perl.js +362 -0
  279. data/assets/_vendor/ace/snippets/pgsql.js +15 -0
  280. data/assets/_vendor/ace/snippets/php.js +398 -0
  281. data/assets/_vendor/ace/snippets/php_laravel_blade.js +15 -0
  282. data/assets/_vendor/ace/snippets/pig.js +15 -0
  283. data/assets/_vendor/ace/snippets/plain_text.js +15 -0
  284. data/assets/_vendor/ace/snippets/powershell.js +15 -0
  285. data/assets/_vendor/ace/snippets/praat.js +15 -0
  286. data/assets/_vendor/ace/snippets/prolog.js +15 -0
  287. data/assets/_vendor/ace/snippets/properties.js +15 -0
  288. data/assets/_vendor/ace/snippets/protobuf.js +15 -0
  289. data/assets/_vendor/ace/snippets/puppet.js +15 -0
  290. data/assets/_vendor/ace/snippets/python.js +173 -0
  291. data/assets/_vendor/ace/snippets/r.js +136 -0
  292. data/assets/_vendor/ace/snippets/razor.js +18 -0
  293. data/assets/_vendor/ace/snippets/rdoc.js +15 -0
  294. data/assets/_vendor/ace/snippets/red.js +15 -0
  295. data/assets/_vendor/ace/snippets/redshift.js +15 -0
  296. data/assets/_vendor/ace/snippets/rhtml.js +15 -0
  297. data/assets/_vendor/ace/snippets/rst.js +37 -0
  298. data/assets/_vendor/ace/snippets/ruby.js +943 -0
  299. data/assets/_vendor/ace/snippets/rust.js +15 -0
  300. data/assets/_vendor/ace/snippets/sass.js +15 -0
  301. data/assets/_vendor/ace/snippets/scad.js +15 -0
  302. data/assets/_vendor/ace/snippets/scala.js +15 -0
  303. data/assets/_vendor/ace/snippets/scheme.js +15 -0
  304. data/assets/_vendor/ace/snippets/scss.js +15 -0
  305. data/assets/_vendor/ace/snippets/sh.js +98 -0
  306. data/assets/_vendor/ace/snippets/sjs.js +15 -0
  307. data/assets/_vendor/ace/snippets/slim.js +15 -0
  308. data/assets/_vendor/ace/snippets/smarty.js +15 -0
  309. data/assets/_vendor/ace/snippets/snippets.js +24 -0
  310. data/assets/_vendor/ace/snippets/soy_template.js +15 -0
  311. data/assets/_vendor/ace/snippets/space.js +15 -0
  312. data/assets/_vendor/ace/snippets/sparql.js +15 -0
  313. data/assets/_vendor/ace/snippets/sql.js +41 -0
  314. data/assets/_vendor/ace/snippets/sqlserver.js +84 -0
  315. data/assets/_vendor/ace/snippets/stylus.js +15 -0
  316. data/assets/_vendor/ace/snippets/svg.js +15 -0
  317. data/assets/_vendor/ace/snippets/swift.js +15 -0
  318. data/assets/_vendor/ace/snippets/tcl.js +107 -0
  319. data/assets/_vendor/ace/snippets/terraform.js +15 -0
  320. data/assets/_vendor/ace/snippets/tex.js +205 -0
  321. data/assets/_vendor/ace/snippets/text.js +15 -0
  322. data/assets/_vendor/ace/snippets/textile.js +45 -0
  323. data/assets/_vendor/ace/snippets/toml.js +15 -0
  324. data/assets/_vendor/ace/snippets/tsx.js +15 -0
  325. data/assets/_vendor/ace/snippets/turtle.js +15 -0
  326. data/assets/_vendor/ace/snippets/twig.js +15 -0
  327. data/assets/_vendor/ace/snippets/typescript.js +15 -0
  328. data/assets/_vendor/ace/snippets/vala.js +201 -0
  329. data/assets/_vendor/ace/snippets/vbscript.js +15 -0
  330. data/assets/_vendor/ace/snippets/velocity.js +44 -0
  331. data/assets/_vendor/ace/snippets/verilog.js +15 -0
  332. data/assets/_vendor/ace/snippets/vhdl.js +15 -0
  333. data/assets/_vendor/ace/snippets/wollok.js +99 -0
  334. data/assets/_vendor/ace/snippets/xml.js +15 -0
  335. data/assets/_vendor/ace/snippets/xquery.js +76 -0
  336. data/assets/_vendor/ace/snippets/yaml.js +15 -0
  337. data/assets/_vendor/ace/theme-ambiance.js +185 -0
  338. data/assets/_vendor/ace/theme-chaos.js +164 -0
  339. data/assets/_vendor/ace/theme-chrome.js +136 -0
  340. data/assets/_vendor/ace/theme-clouds.js +103 -0
  341. data/assets/_vendor/ace/theme-clouds_midnight.js +104 -0
  342. data/assets/_vendor/ace/theme-cobalt.js +121 -0
  343. data/assets/_vendor/ace/theme-crimson_editor.js +126 -0
  344. data/assets/_vendor/ace/theme-dawn.js +116 -0
  345. data/assets/_vendor/ace/theme-dracula.js +136 -0
  346. data/assets/_vendor/ace/theme-dreamweaver.js +149 -0
  347. data/assets/_vendor/ace/theme-eclipse.js +106 -0
  348. data/assets/_vendor/ace/theme-github.js +110 -0
  349. data/assets/_vendor/ace/theme-gob.js +120 -0
  350. data/assets/_vendor/ace/theme-gruvbox.js +90 -0
  351. data/assets/_vendor/ace/theme-idle_fingers.js +104 -0
  352. data/assets/_vendor/ace/theme-iplastic.js +129 -0
  353. data/assets/_vendor/ace/theme-katzenmilch.js +129 -0
  354. data/assets/_vendor/ace/theme-kr_theme.js +112 -0
  355. data/assets/_vendor/ace/theme-kuroir.js +69 -0
  356. data/assets/_vendor/ace/theme-merbivore.js +103 -0
  357. data/assets/_vendor/ace/theme-merbivore_soft.js +104 -0
  358. data/assets/_vendor/ace/theme-mono_industrial.js +115 -0
  359. data/assets/_vendor/ace/theme-monokai.js +113 -0
  360. data/assets/_vendor/ace/theme-pastel_on_dark.js +116 -0
  361. data/assets/_vendor/ace/theme-solarized_dark.js +96 -0
  362. data/assets/_vendor/ace/theme-solarized_light.js +99 -0
  363. data/assets/_vendor/ace/theme-sqlserver.js +146 -0
  364. data/assets/_vendor/ace/theme-terminal.js +122 -0
  365. data/assets/_vendor/ace/theme-textmate.js +138 -0
  366. data/assets/_vendor/ace/theme-tomorrow.js +116 -0
  367. data/assets/_vendor/ace/theme-tomorrow_night.js +116 -0
  368. data/assets/_vendor/ace/theme-tomorrow_night_blue.js +114 -0
  369. data/assets/_vendor/ace/theme-tomorrow_night_bright.js +129 -0
  370. data/assets/_vendor/ace/theme-tomorrow_night_eighties.js +116 -0
  371. data/assets/_vendor/ace/theme-twilight.js +117 -0
  372. data/assets/_vendor/ace/theme-vibrant_ink.js +102 -0
  373. data/assets/_vendor/ace/theme-xcode.js +96 -0
  374. data/assets/_vendor/ace/worker-coffee.js +2165 -0
  375. data/assets/_vendor/ace/worker-css.js +8764 -0
  376. data/assets/_vendor/ace/worker-html.js +11614 -0
  377. data/assets/_vendor/ace/worker-javascript.js +12491 -0
  378. data/assets/_vendor/ace/worker-json.js +2396 -0
  379. data/assets/_vendor/ace/worker-lua.js +3637 -0
  380. data/assets/_vendor/ace/worker-php.js +4313 -0
  381. data/assets/_vendor/ace/worker-xml.js +3899 -0
  382. data/assets/_vendor/ace/worker-xquery.js +70688 -0
  383. data/assets/_vendor/motion-ui/_settings.scss +1 -0
  384. data/assets/_vendor/motion-ui/effects/_fade.scss +1 -4
  385. data/assets/_vendor/motion-ui/effects/_hinge.scss +4 -3
  386. data/assets/_vendor/motion-ui/effects/_shake.scss +1 -1
  387. data/assets/_vendor/motion-ui/effects/_slide.scss +4 -3
  388. data/assets/_vendor/motion-ui/effects/_spin.scss +4 -3
  389. data/assets/_vendor/motion-ui/effects/_wiggle.scss +1 -1
  390. data/assets/_vendor/motion-ui/effects/_zoom.scss +2 -2
  391. data/assets/_vendor/motion-ui/motion-ui.scss +2 -0
  392. data/assets/_vendor/motion-ui/transitions/_fade.scss +6 -4
  393. data/assets/_vendor/motion-ui/transitions/_hinge.scss +3 -2
  394. data/assets/_vendor/motion-ui/transitions/_slide.scss +3 -2
  395. data/assets/_vendor/motion-ui/transitions/_spin.scss +2 -1
  396. data/assets/_vendor/motion-ui/transitions/_zoom.scss +6 -4
  397. data/assets/_vendor/motion-ui/util/_animation.scss +1 -1
  398. data/assets/_vendor/motion-ui/util/_args.scss +2 -2
  399. data/assets/_vendor/motion-ui/util/_function.scss +94 -0
  400. data/assets/_vendor/motion-ui/util/_keyframe.scss +5 -5
  401. data/assets/_vendor/motion-ui/util/_series.scss +20 -17
  402. data/assets/_vendor/motion-ui/util/_string.scss +36 -0
  403. data/assets/_vendor/tinymce/plugins/advlist/plugin.js +136 -404
  404. data/assets/_vendor/tinymce/plugins/advlist/plugin.min.js +1 -1
  405. data/assets/_vendor/tinymce/plugins/anchor/plugin.js +103 -323
  406. data/assets/_vendor/tinymce/plugins/anchor/plugin.min.js +1 -1
  407. data/assets/_vendor/tinymce/plugins/autolink/plugin.js +153 -377
  408. data/assets/_vendor/tinymce/plugins/autolink/plugin.min.js +1 -1
  409. data/assets/_vendor/tinymce/plugins/autoresize/plugin.js +145 -427
  410. data/assets/_vendor/tinymce/plugins/autoresize/plugin.min.js +1 -1
  411. data/assets/_vendor/tinymce/plugins/autosave/plugin.js +197 -579
  412. data/assets/_vendor/tinymce/plugins/autosave/plugin.min.js +1 -1
  413. data/assets/_vendor/tinymce/plugins/bbcode/plugin.js +88 -251
  414. data/assets/_vendor/tinymce/plugins/bbcode/plugin.min.js +1 -1
  415. data/assets/_vendor/tinymce/plugins/charmap/plugin.js +1243 -818
  416. data/assets/_vendor/tinymce/plugins/charmap/plugin.min.js +1 -1
  417. data/assets/_vendor/tinymce/plugins/code/plugin.js +82 -326
  418. data/assets/_vendor/tinymce/plugins/code/plugin.min.js +1 -1
  419. data/assets/_vendor/tinymce/plugins/codesample/plugin.js +829 -1444
  420. data/assets/_vendor/tinymce/plugins/codesample/plugin.min.js +1 -1
  421. data/assets/_vendor/tinymce/plugins/colorpicker/plugin.js +111 -257
  422. data/assets/_vendor/tinymce/plugins/colorpicker/plugin.min.js +1 -1
  423. data/assets/_vendor/tinymce/plugins/contextmenu/plugin.js +141 -469
  424. data/assets/_vendor/tinymce/plugins/contextmenu/plugin.min.js +1 -1
  425. data/assets/_vendor/tinymce/plugins/directionality/plugin.js +57 -261
  426. data/assets/_vendor/tinymce/plugins/directionality/plugin.min.js +1 -1
  427. data/assets/_vendor/tinymce/plugins/emoticons/plugin.js +78 -247
  428. data/assets/_vendor/tinymce/plugins/emoticons/plugin.min.js +1 -1
  429. data/assets/_vendor/tinymce/plugins/fullpage/plugin.js +463 -906
  430. data/assets/_vendor/tinymce/plugins/fullpage/plugin.min.js +1 -1
  431. data/assets/_vendor/tinymce/plugins/fullscreen/plugin.js +149 -427
  432. data/assets/_vendor/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  433. data/assets/_vendor/tinymce/plugins/help/plugin.js +634 -1434
  434. data/assets/_vendor/tinymce/plugins/help/plugin.min.js +1 -1
  435. data/assets/_vendor/tinymce/plugins/hr/plugin.js +29 -185
  436. data/assets/_vendor/tinymce/plugins/hr/plugin.min.js +1 -1
  437. data/assets/_vendor/tinymce/plugins/image/plugin.js +1147 -1508
  438. data/assets/_vendor/tinymce/plugins/image/plugin.min.js +1 -1
  439. data/assets/_vendor/tinymce/plugins/imagetools/plugin.js +3319 -4079
  440. data/assets/_vendor/tinymce/plugins/imagetools/plugin.min.js +1 -2
  441. data/assets/_vendor/tinymce/plugins/importcss/plugin.js +230 -543
  442. data/assets/_vendor/tinymce/plugins/importcss/plugin.min.js +1 -1
  443. data/assets/_vendor/tinymce/plugins/insertdatetime/plugin.js +151 -460
  444. data/assets/_vendor/tinymce/plugins/insertdatetime/plugin.min.js +1 -1
  445. data/assets/_vendor/tinymce/plugins/legacyoutput/plugin.js +204 -379
  446. data/assets/_vendor/tinymce/plugins/legacyoutput/plugin.min.js +1 -1
  447. data/assets/_vendor/tinymce/plugins/link/plugin.js +644 -1162
  448. data/assets/_vendor/tinymce/plugins/link/plugin.min.js +1 -1
  449. data/assets/_vendor/tinymce/plugins/lists/plugin.js +1005 -1875
  450. data/assets/_vendor/tinymce/plugins/lists/plugin.min.js +1 -1
  451. data/assets/_vendor/tinymce/plugins/media/plugin.js +1066 -1926
  452. data/assets/_vendor/tinymce/plugins/media/plugin.min.js +1 -1
  453. data/assets/_vendor/tinymce/plugins/nonbreaking/plugin.js +70 -298
  454. data/assets/_vendor/tinymce/plugins/nonbreaking/plugin.min.js +1 -1
  455. data/assets/_vendor/tinymce/plugins/noneditable/plugin.js +96 -294
  456. data/assets/_vendor/tinymce/plugins/noneditable/plugin.min.js +1 -1
  457. data/assets/_vendor/tinymce/plugins/pagebreak/plugin.js +92 -337
  458. data/assets/_vendor/tinymce/plugins/pagebreak/plugin.min.js +1 -1
  459. data/assets/_vendor/tinymce/plugins/paste/plugin.js +1363 -2801
  460. data/assets/_vendor/tinymce/plugins/paste/plugin.min.js +1 -1
  461. data/assets/_vendor/tinymce/plugins/preview/plugin.js +106 -393
  462. data/assets/_vendor/tinymce/plugins/preview/plugin.min.js +1 -1
  463. data/assets/_vendor/tinymce/plugins/print/plugin.js +29 -185
  464. data/assets/_vendor/tinymce/plugins/print/plugin.min.js +1 -1
  465. data/assets/_vendor/tinymce/plugins/save/plugin.js +100 -350
  466. data/assets/_vendor/tinymce/plugins/save/plugin.min.js +1 -1
  467. data/assets/_vendor/tinymce/plugins/searchreplace/plugin.js +491 -865
  468. data/assets/_vendor/tinymce/plugins/searchreplace/plugin.min.js +1 -1
  469. data/assets/_vendor/tinymce/plugins/spellchecker/plugin.js +630 -1292
  470. data/assets/_vendor/tinymce/plugins/spellchecker/plugin.min.js +1 -1
  471. data/assets/_vendor/tinymce/plugins/tabfocus/plugin.js +96 -391
  472. data/assets/_vendor/tinymce/plugins/tabfocus/plugin.min.js +1 -1
  473. data/assets/_vendor/tinymce/plugins/table/plugin.js +9537 -14920
  474. data/assets/_vendor/tinymce/plugins/table/plugin.min.js +1 -5
  475. data/assets/_vendor/tinymce/plugins/template/plugin.js +309 -771
  476. data/assets/_vendor/tinymce/plugins/template/plugin.min.js +1 -1
  477. data/assets/_vendor/tinymce/plugins/textcolor/plugin.js +319 -592
  478. data/assets/_vendor/tinymce/plugins/textcolor/plugin.min.js +1 -1
  479. data/assets/_vendor/tinymce/plugins/textpattern/plugin.js +326 -674
  480. data/assets/_vendor/tinymce/plugins/textpattern/plugin.min.js +1 -1
  481. data/assets/_vendor/tinymce/plugins/toc/plugin.js +199 -530
  482. data/assets/_vendor/tinymce/plugins/toc/plugin.min.js +1 -1
  483. data/assets/_vendor/tinymce/plugins/visualblocks/plugin.js +112 -436
  484. data/assets/_vendor/tinymce/plugins/visualblocks/plugin.min.js +1 -1
  485. data/assets/_vendor/tinymce/plugins/visualchars/plugin.js +428 -1248
  486. data/assets/_vendor/tinymce/plugins/visualchars/plugin.min.js +1 -1
  487. data/assets/_vendor/tinymce/plugins/wordcount/plugin.js +307 -699
  488. data/assets/_vendor/tinymce/plugins/wordcount/plugin.min.js +1 -1
  489. data/assets/_vendor/tinymce/skins/lightgray/content.inline.min.css +1 -1
  490. data/assets/_vendor/tinymce/skins/lightgray/content.min.css +1 -1
  491. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  492. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.svg +1 -1
  493. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  494. data/assets/_vendor/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  495. data/assets/_vendor/tinymce/skins/lightgray/skin.min.css +1 -1
  496. data/assets/_vendor/tinymce/skins/lightgray/skin.mobile.min.css +1 -1
  497. data/assets/_vendor/tinymce/themes/inlite/theme.js +9693 -18245
  498. data/assets/_vendor/tinymce/themes/inlite/theme.min.js +1 -5
  499. data/assets/_vendor/tinymce/themes/mobile/theme.js +12629 -22467
  500. data/assets/_vendor/tinymce/themes/mobile/theme.min.js +1 -8
  501. data/assets/_vendor/tinymce/themes/modern/theme.js +9510 -17780
  502. data/assets/_vendor/tinymce/themes/modern/theme.min.js +1 -5
  503. data/assets/_vendor/tinymce/tinymce.js +25087 -42606
  504. data/assets/_vendor/yoastseo/css/_icons.scss +7 -7
  505. data/assets/_vendor/yoastseo/css/_snippet-editor.scss +1 -1
  506. data/assets/bedrock/js/bedrock.js +1 -71697
  507. data/assets/bedrock/scss/_bedrock-components.scss +20 -0
  508. data/assets/bedrock/scss/_bedrock-settings.scss +12 -4
  509. data/assets/bedrock/scss/_foundation-settings.scss +4 -2
  510. data/assets/bedrock/scss/components/ace-editor.scss +21 -0
  511. data/assets/bedrock/scss/components/attachments-grid.scss +18 -15
  512. data/assets/bedrock/scss/components/date-picker.scss +146 -0
  513. data/assets/bedrock/scss/components/dropzone-upload.scss +7 -0
  514. data/assets/bedrock/scss/components/file-input.scss +7 -0
  515. data/assets/bedrock/scss/components/file-preview.scss +36 -0
  516. data/assets/bedrock/scss/components/frame-embed.scss +23 -0
  517. data/assets/bedrock/scss/components/global.scss +27 -0
  518. data/assets/bedrock/scss/components/helper-classes.scss +1 -0
  519. data/assets/bedrock/scss/components/icon-box.scss +38 -0
  520. data/assets/bedrock/scss/components/item-list.scss +66 -0
  521. data/assets/bedrock/scss/components/lists.scss +58 -0
  522. data/assets/bedrock/scss/components/off-canvas-menu.scss +27 -15
  523. data/assets/bedrock/scss/components/place-autocomplete.scss +90 -0
  524. data/assets/bedrock/scss/components/rrule-generator.scss +102 -0
  525. data/assets/bedrock/scss/components/rrule-reveal.scss +14 -0
  526. data/assets/bedrock/scss/components/select-box.scss +1 -0
  527. data/assets/bedrock/scss/components/seo-analysis.scss +5 -0
  528. data/assets/bedrock/scss/components/textarea.scss +14 -2
  529. data/assets/bedrock/scss/components/tiny-mce-editor.scss +5 -16
  530. data/lib/bedrock_sass.rb +5 -0
  531. data/lib/bedrock_sass/version.rb +1 -1
  532. data/lib/tasks/before_assets_precompile.rake +1 -0
  533. metadata +395 -4
  534. data/CODE_OF_CONDUCT.md +0 -74
@@ -0,0 +1,4736 @@
1
+ define("ace/mode/slim_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
2
+ "use strict";
3
+
4
+ var modes = require("../config").$modes;
5
+
6
+ var oop = require("../lib/oop");
7
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
8
+ var SlimHighlightRules = function() {
9
+
10
+ this.$rules = {
11
+ "start": [
12
+ {
13
+ token: "keyword",
14
+ regex: /^(\s*)(\w+):\s*/,
15
+ onMatch: function(value, state, stack, line) {
16
+ var indent = /^\s*/.exec(line)[0];
17
+ var m = value.match(/^(\s*)(\w+):/);
18
+ var language = m[2];
19
+ if (!/^(javascript|ruby|coffee|markdown|css|scss|sass|less)$/.test(language))
20
+ language = "";
21
+ stack.unshift("language-embed", [], [indent, language], state);
22
+ return this.token;
23
+ },
24
+ stateName: "language-embed",
25
+ next: [{
26
+ token: "string",
27
+ regex: /^(\s*)/,
28
+ onMatch: function(value, state, stack, line) {
29
+ var indent = stack[2][0];
30
+ if (indent.length >= value.length) {
31
+ stack.splice(0, 3);
32
+ this.next = stack.shift();
33
+ return this.token;
34
+ }
35
+ this.next = "";
36
+ return [{type: "text", value: indent}];
37
+ },
38
+ next: ""
39
+ }, {
40
+ token: "string",
41
+ regex: /.+/,
42
+ onMatch: function(value, state, stack, line) {
43
+ var indent = stack[2][0];
44
+ var language = stack[2][1];
45
+ var embedState = stack[1];
46
+
47
+ if (modes[language]) {
48
+ var data = modes[language].getTokenizer().getLineTokens(line.slice(indent.length), embedState.slice(0));
49
+ stack[1] = data.state;
50
+ return data.tokens;
51
+ }
52
+ return this.token;
53
+ }
54
+ }]
55
+ },
56
+ {
57
+ token: 'constant.begin.javascript.filter.slim',
58
+ regex: '^(\\s*)():$'
59
+ }, {
60
+ token: 'constant.begin..filter.slim',
61
+ regex: '^(\\s*)(ruby):$'
62
+ }, {
63
+ token: 'constant.begin.coffeescript.filter.slim',
64
+ regex: '^(\\s*)():$'
65
+ }, {
66
+ token: 'constant.begin..filter.slim',
67
+ regex: '^(\\s*)(markdown):$'
68
+ }, {
69
+ token: 'constant.begin.css.filter.slim',
70
+ regex: '^(\\s*)():$'
71
+ }, {
72
+ token: 'constant.begin.scss.filter.slim',
73
+ regex: '^(\\s*)():$'
74
+ }, {
75
+ token: 'constant.begin..filter.slim',
76
+ regex: '^(\\s*)(sass):$'
77
+ }, {
78
+ token: 'constant.begin..filter.slim',
79
+ regex: '^(\\s*)(less):$'
80
+ }, {
81
+ token: 'constant.begin..filter.slim',
82
+ regex: '^(\\s*)(erb):$'
83
+ }, {
84
+ token: 'keyword.html.tags.slim',
85
+ regex: '^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b'
86
+
87
+ }, {
88
+ token: 'keyword.slim',
89
+ regex: '^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)'
90
+ }, {
91
+ token: "string",
92
+ regex: /^(\s*)('|\||\/|(\/!))\s*/,
93
+ onMatch: function(val, state, stack, line) {
94
+ var indent = /^\s*/.exec(line)[0];
95
+ if (stack.length < 1) {
96
+ stack.push(this.next);
97
+ }
98
+ else {
99
+ stack[0] = "mlString";
100
+ }
101
+
102
+ if (stack.length < 2) {
103
+ stack.push(indent.length);
104
+ }
105
+ else {
106
+ stack[1] = indent.length;
107
+ }
108
+ return this.token;
109
+ },
110
+ next: "mlString"
111
+ }, {
112
+ token: 'keyword.control.slim',
113
+ regex: '^(\\s*)(\\-|==|=)',
114
+ push: [{
115
+ token: 'control.end.slim',
116
+ regex: '$',
117
+ next: "pop"
118
+ }, {
119
+ include: "rubyline"
120
+ }, {
121
+ include: "misc"
122
+ }]
123
+
124
+ }, {
125
+ token: 'paren',
126
+ regex: '\\(',
127
+ push: [{
128
+ token: 'paren',
129
+ regex: '\\)',
130
+ next: "pop"
131
+ }, {
132
+ include: "misc"
133
+ }]
134
+
135
+ }, {
136
+ token: 'paren',
137
+ regex: '\\[',
138
+ push: [{
139
+ token: 'paren',
140
+ regex: '\\]',
141
+ next: "pop"
142
+ }, {
143
+ include: "misc"
144
+ }]
145
+ }, {
146
+ include: "misc"
147
+ }
148
+ ],
149
+ "mlString": [{
150
+ token: "indent",
151
+ regex: /^\s*/,
152
+ onMatch: function(val, state, stack) {
153
+ var curIndent = stack[1];
154
+
155
+ if (curIndent >= val.length) {
156
+ this.next = "start";
157
+ stack.splice(0);
158
+ }
159
+ else {
160
+ this.next = "mlString";
161
+ }
162
+ return this.token;
163
+ },
164
+ next: "start"
165
+ }, {
166
+ defaultToken: "string"
167
+ }],
168
+ "rubyline": [{
169
+ token: "keyword.operator.ruby.embedded.slim",
170
+ regex: "(==|=)(<>|><|<'|'<|<|>)?|-"
171
+ }, {
172
+ token: "list.ruby.operators.slim",
173
+ regex: "(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b"
174
+ }, {
175
+ token: "string",
176
+ regex: "['](.)*?[']"
177
+ }, {
178
+ token: "string",
179
+ regex: "[\"](.)*?[\"]"
180
+ }],
181
+ "misc": [{
182
+ token: 'class.variable.slim',
183
+ regex: '\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b'
184
+ }, {
185
+ token: "list.meta.slim",
186
+ regex: "(\\b)(true|false|nil)(\\b)"
187
+ }, {
188
+ token: 'keyword.operator.equals.slim',
189
+ regex: '='
190
+ }, {
191
+ token: "string",
192
+ regex: "['](.)*?[']"
193
+ }, {
194
+ token: "string",
195
+ regex: "[\"](.)*?[\"]"
196
+ }]
197
+ };
198
+ this.normalizeRules();
199
+ };
200
+
201
+
202
+ oop.inherits(SlimHighlightRules, TextHighlightRules);
203
+
204
+ exports.SlimHighlightRules = SlimHighlightRules;
205
+ });
206
+
207
+ define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
208
+ "use strict";
209
+
210
+ var oop = require("../lib/oop");
211
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
212
+
213
+ var DocCommentHighlightRules = function() {
214
+ this.$rules = {
215
+ "start" : [ {
216
+ token : "comment.doc.tag",
217
+ regex : "@[\\w\\d_]+" // TODO: fix email addresses
218
+ },
219
+ DocCommentHighlightRules.getTagRule(),
220
+ {
221
+ defaultToken : "comment.doc",
222
+ caseInsensitive: true
223
+ }]
224
+ };
225
+ };
226
+
227
+ oop.inherits(DocCommentHighlightRules, TextHighlightRules);
228
+
229
+ DocCommentHighlightRules.getTagRule = function(start) {
230
+ return {
231
+ token : "comment.doc.tag.storage.type",
232
+ regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
233
+ };
234
+ };
235
+
236
+ DocCommentHighlightRules.getStartRule = function(start) {
237
+ return {
238
+ token : "comment.doc", // doc comment
239
+ regex : "\\/\\*(?=\\*)",
240
+ next : start
241
+ };
242
+ };
243
+
244
+ DocCommentHighlightRules.getEndRule = function (start) {
245
+ return {
246
+ token : "comment.doc", // closing comment
247
+ regex : "\\*\\/",
248
+ next : start
249
+ };
250
+ };
251
+
252
+
253
+ exports.DocCommentHighlightRules = DocCommentHighlightRules;
254
+
255
+ });
256
+
257
+ define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) {
258
+ "use strict";
259
+
260
+ var oop = require("../lib/oop");
261
+ var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
262
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
263
+ var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*";
264
+
265
+ var JavaScriptHighlightRules = function(options) {
266
+ var keywordMapper = this.createKeywordMapper({
267
+ "variable.language":
268
+ "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors
269
+ "Namespace|QName|XML|XMLList|" + // E4X
270
+ "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
271
+ "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" +
272
+ "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors
273
+ "SyntaxError|TypeError|URIError|" +
274
+ "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions
275
+ "isNaN|parseFloat|parseInt|" +
276
+ "JSON|Math|" + // Other
277
+ "this|arguments|prototype|window|document" , // Pseudo
278
+ "keyword":
279
+ "const|yield|import|get|set|async|await|" +
280
+ "break|case|catch|continue|default|delete|do|else|finally|for|function|" +
281
+ "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" +
282
+ "__parent__|__count__|escape|unescape|with|__proto__|" +
283
+ "class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
284
+ "storage.type":
285
+ "const|let|var|function",
286
+ "constant.language":
287
+ "null|Infinity|NaN|undefined",
288
+ "support.function":
289
+ "alert",
290
+ "constant.language.boolean": "true|false"
291
+ }, "identifier");
292
+ var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void";
293
+
294
+ var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
295
+ "u[0-9a-fA-F]{4}|" + // unicode
296
+ "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
297
+ "[0-2][0-7]{0,2}|" + // oct
298
+ "3[0-7][0-7]?|" + // oct
299
+ "[4-7][0-7]?|" + //oct
300
+ ".)";
301
+ this.$rules = {
302
+ "no_regex" : [
303
+ DocCommentHighlightRules.getStartRule("doc-start"),
304
+ comments("no_regex"),
305
+ {
306
+ token : "string",
307
+ regex : "'(?=.)",
308
+ next : "qstring"
309
+ }, {
310
+ token : "string",
311
+ regex : '"(?=.)',
312
+ next : "qqstring"
313
+ }, {
314
+ token : "constant.numeric", // hexadecimal, octal and binary
315
+ regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/
316
+ }, {
317
+ token : "constant.numeric", // decimal integers and floats
318
+ regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/
319
+ }, {
320
+ token : [
321
+ "storage.type", "punctuation.operator", "support.function",
322
+ "punctuation.operator", "entity.name.function", "text","keyword.operator"
323
+ ],
324
+ regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)",
325
+ next: "function_arguments"
326
+ }, {
327
+ token : [
328
+ "storage.type", "punctuation.operator", "entity.name.function", "text",
329
+ "keyword.operator", "text", "storage.type", "text", "paren.lparen"
330
+ ],
331
+ regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
332
+ next: "function_arguments"
333
+ }, {
334
+ token : [
335
+ "entity.name.function", "text", "keyword.operator", "text", "storage.type",
336
+ "text", "paren.lparen"
337
+ ],
338
+ regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
339
+ next: "function_arguments"
340
+ }, {
341
+ token : [
342
+ "storage.type", "punctuation.operator", "entity.name.function", "text",
343
+ "keyword.operator", "text",
344
+ "storage.type", "text", "entity.name.function", "text", "paren.lparen"
345
+ ],
346
+ regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
347
+ next: "function_arguments"
348
+ }, {
349
+ token : [
350
+ "storage.type", "text", "entity.name.function", "text", "paren.lparen"
351
+ ],
352
+ regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()",
353
+ next: "function_arguments"
354
+ }, {
355
+ token : [
356
+ "entity.name.function", "text", "punctuation.operator",
357
+ "text", "storage.type", "text", "paren.lparen"
358
+ ],
359
+ regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
360
+ next: "function_arguments"
361
+ }, {
362
+ token : [
363
+ "text", "text", "storage.type", "text", "paren.lparen"
364
+ ],
365
+ regex : "(:)(\\s*)(function)(\\s*)(\\()",
366
+ next: "function_arguments"
367
+ }, {
368
+ token : "keyword",
369
+ regex : "from(?=\\s*('|\"))"
370
+ }, {
371
+ token : "keyword",
372
+ regex : "(?:" + kwBeforeRe + ")\\b",
373
+ next : "start"
374
+ }, {
375
+ token : ["support.constant"],
376
+ regex : /that\b/
377
+ }, {
378
+ token : ["storage.type", "punctuation.operator", "support.function.firebug"],
379
+ regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/
380
+ }, {
381
+ token : keywordMapper,
382
+ regex : identifierRe
383
+ }, {
384
+ token : "punctuation.operator",
385
+ regex : /[.](?![.])/,
386
+ next : "property"
387
+ }, {
388
+ token : "storage.type",
389
+ regex : /=>/,
390
+ next : "start"
391
+ }, {
392
+ token : "keyword.operator",
393
+ regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,
394
+ next : "start"
395
+ }, {
396
+ token : "punctuation.operator",
397
+ regex : /[?:,;.]/,
398
+ next : "start"
399
+ }, {
400
+ token : "paren.lparen",
401
+ regex : /[\[({]/,
402
+ next : "start"
403
+ }, {
404
+ token : "paren.rparen",
405
+ regex : /[\])}]/
406
+ }, {
407
+ token: "comment",
408
+ regex: /^#!.*$/
409
+ }
410
+ ],
411
+ property: [{
412
+ token : "text",
413
+ regex : "\\s+"
414
+ }, {
415
+ token : [
416
+ "storage.type", "punctuation.operator", "entity.name.function", "text",
417
+ "keyword.operator", "text",
418
+ "storage.type", "text", "entity.name.function", "text", "paren.lparen"
419
+ ],
420
+ regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",
421
+ next: "function_arguments"
422
+ }, {
423
+ token : "punctuation.operator",
424
+ regex : /[.](?![.])/
425
+ }, {
426
+ token : "support.function",
427
+ 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(?=\()/
428
+ }, {
429
+ token : "support.function.dom",
430
+ 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(?=\()/
431
+ }, {
432
+ token : "support.constant",
433
+ 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/
434
+ }, {
435
+ token : "identifier",
436
+ regex : identifierRe
437
+ }, {
438
+ regex: "",
439
+ token: "empty",
440
+ next: "no_regex"
441
+ }
442
+ ],
443
+ "start": [
444
+ DocCommentHighlightRules.getStartRule("doc-start"),
445
+ comments("start"),
446
+ {
447
+ token: "string.regexp",
448
+ regex: "\\/",
449
+ next: "regex"
450
+ }, {
451
+ token : "text",
452
+ regex : "\\s+|^$",
453
+ next : "start"
454
+ }, {
455
+ token: "empty",
456
+ regex: "",
457
+ next: "no_regex"
458
+ }
459
+ ],
460
+ "regex": [
461
+ {
462
+ token: "regexp.keyword.operator",
463
+ regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
464
+ }, {
465
+ token: "string.regexp",
466
+ regex: "/[sxngimy]*",
467
+ next: "no_regex"
468
+ }, {
469
+ token : "invalid",
470
+ regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
471
+ }, {
472
+ token : "constant.language.escape",
473
+ regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/
474
+ }, {
475
+ token : "constant.language.delimiter",
476
+ regex: /\|/
477
+ }, {
478
+ token: "constant.language.escape",
479
+ regex: /\[\^?/,
480
+ next: "regex_character_class"
481
+ }, {
482
+ token: "empty",
483
+ regex: "$",
484
+ next: "no_regex"
485
+ }, {
486
+ defaultToken: "string.regexp"
487
+ }
488
+ ],
489
+ "regex_character_class": [
490
+ {
491
+ token: "regexp.charclass.keyword.operator",
492
+ regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
493
+ }, {
494
+ token: "constant.language.escape",
495
+ regex: "]",
496
+ next: "regex"
497
+ }, {
498
+ token: "constant.language.escape",
499
+ regex: "-"
500
+ }, {
501
+ token: "empty",
502
+ regex: "$",
503
+ next: "no_regex"
504
+ }, {
505
+ defaultToken: "string.regexp.charachterclass"
506
+ }
507
+ ],
508
+ "function_arguments": [
509
+ {
510
+ token: "variable.parameter",
511
+ regex: identifierRe
512
+ }, {
513
+ token: "punctuation.operator",
514
+ regex: "[, ]+"
515
+ }, {
516
+ token: "punctuation.operator",
517
+ regex: "$"
518
+ }, {
519
+ token: "empty",
520
+ regex: "",
521
+ next: "no_regex"
522
+ }
523
+ ],
524
+ "qqstring" : [
525
+ {
526
+ token : "constant.language.escape",
527
+ regex : escapedRe
528
+ }, {
529
+ token : "string",
530
+ regex : "\\\\$",
531
+ consumeLineEnd : true
532
+ }, {
533
+ token : "string",
534
+ regex : '"|$',
535
+ next : "no_regex"
536
+ }, {
537
+ defaultToken: "string"
538
+ }
539
+ ],
540
+ "qstring" : [
541
+ {
542
+ token : "constant.language.escape",
543
+ regex : escapedRe
544
+ }, {
545
+ token : "string",
546
+ regex : "\\\\$",
547
+ consumeLineEnd : true
548
+ }, {
549
+ token : "string",
550
+ regex : "'|$",
551
+ next : "no_regex"
552
+ }, {
553
+ defaultToken: "string"
554
+ }
555
+ ]
556
+ };
557
+
558
+
559
+ if (!options || !options.noES6) {
560
+ this.$rules.no_regex.unshift({
561
+ regex: "[{}]", onMatch: function(val, state, stack) {
562
+ this.next = val == "{" ? this.nextState : "";
563
+ if (val == "{" && stack.length) {
564
+ stack.unshift("start", state);
565
+ }
566
+ else if (val == "}" && stack.length) {
567
+ stack.shift();
568
+ this.next = stack.shift();
569
+ if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1)
570
+ return "paren.quasi.end";
571
+ }
572
+ return val == "{" ? "paren.lparen" : "paren.rparen";
573
+ },
574
+ nextState: "start"
575
+ }, {
576
+ token : "string.quasi.start",
577
+ regex : /`/,
578
+ push : [{
579
+ token : "constant.language.escape",
580
+ regex : escapedRe
581
+ }, {
582
+ token : "paren.quasi.start",
583
+ regex : /\${/,
584
+ push : "start"
585
+ }, {
586
+ token : "string.quasi.end",
587
+ regex : /`/,
588
+ next : "pop"
589
+ }, {
590
+ defaultToken: "string.quasi"
591
+ }]
592
+ });
593
+
594
+ if (!options || options.jsx != false)
595
+ JSX.call(this);
596
+ }
597
+
598
+ this.embedRules(DocCommentHighlightRules, "doc-",
599
+ [ DocCommentHighlightRules.getEndRule("no_regex") ]);
600
+
601
+ this.normalizeRules();
602
+ };
603
+
604
+ oop.inherits(JavaScriptHighlightRules, TextHighlightRules);
605
+
606
+ function JSX() {
607
+ var tagRegex = identifierRe.replace("\\d", "\\d\\-");
608
+ var jsxTag = {
609
+ onMatch : function(val, state, stack) {
610
+ var offset = val.charAt(1) == "/" ? 2 : 1;
611
+ if (offset == 1) {
612
+ if (state != this.nextState)
613
+ stack.unshift(this.next, this.nextState, 0);
614
+ else
615
+ stack.unshift(this.next);
616
+ stack[2]++;
617
+ } else if (offset == 2) {
618
+ if (state == this.nextState) {
619
+ stack[1]--;
620
+ if (!stack[1] || stack[1] < 0) {
621
+ stack.shift();
622
+ stack.shift();
623
+ }
624
+ }
625
+ }
626
+ return [{
627
+ type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml",
628
+ value: val.slice(0, offset)
629
+ }, {
630
+ type: "meta.tag.tag-name.xml",
631
+ value: val.substr(offset)
632
+ }];
633
+ },
634
+ regex : "</?" + tagRegex + "",
635
+ next: "jsxAttributes",
636
+ nextState: "jsx"
637
+ };
638
+ this.$rules.start.unshift(jsxTag);
639
+ var jsxJsRule = {
640
+ regex: "{",
641
+ token: "paren.quasi.start",
642
+ push: "start"
643
+ };
644
+ this.$rules.jsx = [
645
+ jsxJsRule,
646
+ jsxTag,
647
+ {include : "reference"},
648
+ {defaultToken: "string"}
649
+ ];
650
+ this.$rules.jsxAttributes = [{
651
+ token : "meta.tag.punctuation.tag-close.xml",
652
+ regex : "/?>",
653
+ onMatch : function(value, currentState, stack) {
654
+ if (currentState == stack[0])
655
+ stack.shift();
656
+ if (value.length == 2) {
657
+ if (stack[0] == this.nextState)
658
+ stack[1]--;
659
+ if (!stack[1] || stack[1] < 0) {
660
+ stack.splice(0, 2);
661
+ }
662
+ }
663
+ this.next = stack[0] || "start";
664
+ return [{type: this.token, value: value}];
665
+ },
666
+ nextState: "jsx"
667
+ },
668
+ jsxJsRule,
669
+ comments("jsxAttributes"),
670
+ {
671
+ token : "entity.other.attribute-name.xml",
672
+ regex : tagRegex
673
+ }, {
674
+ token : "keyword.operator.attribute-equals.xml",
675
+ regex : "="
676
+ }, {
677
+ token : "text.tag-whitespace.xml",
678
+ regex : "\\s+"
679
+ }, {
680
+ token : "string.attribute-value.xml",
681
+ regex : "'",
682
+ stateName : "jsx_attr_q",
683
+ push : [
684
+ {token : "string.attribute-value.xml", regex: "'", next: "pop"},
685
+ {include : "reference"},
686
+ {defaultToken : "string.attribute-value.xml"}
687
+ ]
688
+ }, {
689
+ token : "string.attribute-value.xml",
690
+ regex : '"',
691
+ stateName : "jsx_attr_qq",
692
+ push : [
693
+ {token : "string.attribute-value.xml", regex: '"', next: "pop"},
694
+ {include : "reference"},
695
+ {defaultToken : "string.attribute-value.xml"}
696
+ ]
697
+ },
698
+ jsxTag
699
+ ];
700
+ this.$rules.reference = [{
701
+ token : "constant.language.escape.reference.xml",
702
+ regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
703
+ }];
704
+ }
705
+
706
+ function comments(next) {
707
+ return [
708
+ {
709
+ token : "comment", // multi line comment
710
+ regex : /\/\*/,
711
+ next: [
712
+ DocCommentHighlightRules.getTagRule(),
713
+ {token : "comment", regex : "\\*\\/", next : next || "pop"},
714
+ {defaultToken : "comment", caseInsensitive: true}
715
+ ]
716
+ }, {
717
+ token : "comment",
718
+ regex : "\\/\\/",
719
+ next: [
720
+ DocCommentHighlightRules.getTagRule(),
721
+ {token : "comment", regex : "$|^", next : next || "pop"},
722
+ {defaultToken : "comment", caseInsensitive: true}
723
+ ]
724
+ }
725
+ ];
726
+ }
727
+ exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
728
+ });
729
+
730
+ define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) {
731
+ "use strict";
732
+
733
+ var Range = require("../range").Range;
734
+
735
+ var MatchingBraceOutdent = function() {};
736
+
737
+ (function() {
738
+
739
+ this.checkOutdent = function(line, input) {
740
+ if (! /^\s+$/.test(line))
741
+ return false;
742
+
743
+ return /^\s*\}/.test(input);
744
+ };
745
+
746
+ this.autoOutdent = function(doc, row) {
747
+ var line = doc.getLine(row);
748
+ var match = line.match(/^(\s*\})/);
749
+
750
+ if (!match) return 0;
751
+
752
+ var column = match[1].length;
753
+ var openBracePos = doc.findMatchingBracket({row: row, column: column});
754
+
755
+ if (!openBracePos || openBracePos.row == row) return 0;
756
+
757
+ var indent = this.$getIndent(doc.getLine(openBracePos.row));
758
+ doc.replace(new Range(row, 0, row, column-1), indent);
759
+ };
760
+
761
+ this.$getIndent = function(line) {
762
+ return line.match(/^\s*/)[0];
763
+ };
764
+
765
+ }).call(MatchingBraceOutdent.prototype);
766
+
767
+ exports.MatchingBraceOutdent = MatchingBraceOutdent;
768
+ });
769
+
770
+ define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
771
+ "use strict";
772
+
773
+ var oop = require("../../lib/oop");
774
+ var Range = require("../../range").Range;
775
+ var BaseFoldMode = require("./fold_mode").FoldMode;
776
+
777
+ var FoldMode = exports.FoldMode = function(commentRegex) {
778
+ if (commentRegex) {
779
+ this.foldingStartMarker = new RegExp(
780
+ this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
781
+ );
782
+ this.foldingStopMarker = new RegExp(
783
+ this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
784
+ );
785
+ }
786
+ };
787
+ oop.inherits(FoldMode, BaseFoldMode);
788
+
789
+ (function() {
790
+
791
+ this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
792
+ this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
793
+ this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
794
+ this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
795
+ this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
796
+ this._getFoldWidgetBase = this.getFoldWidget;
797
+ this.getFoldWidget = function(session, foldStyle, row) {
798
+ var line = session.getLine(row);
799
+
800
+ if (this.singleLineBlockCommentRe.test(line)) {
801
+ if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
802
+ return "";
803
+ }
804
+
805
+ var fw = this._getFoldWidgetBase(session, foldStyle, row);
806
+
807
+ if (!fw && this.startRegionRe.test(line))
808
+ return "start"; // lineCommentRegionStart
809
+
810
+ return fw;
811
+ };
812
+
813
+ this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
814
+ var line = session.getLine(row);
815
+
816
+ if (this.startRegionRe.test(line))
817
+ return this.getCommentRegionBlock(session, line, row);
818
+
819
+ var match = line.match(this.foldingStartMarker);
820
+ if (match) {
821
+ var i = match.index;
822
+
823
+ if (match[1])
824
+ return this.openingBracketBlock(session, match[1], row, i);
825
+
826
+ var range = session.getCommentFoldRange(row, i + match[0].length, 1);
827
+
828
+ if (range && !range.isMultiLine()) {
829
+ if (forceMultiline) {
830
+ range = this.getSectionRange(session, row);
831
+ } else if (foldStyle != "all")
832
+ range = null;
833
+ }
834
+
835
+ return range;
836
+ }
837
+
838
+ if (foldStyle === "markbegin")
839
+ return;
840
+
841
+ var match = line.match(this.foldingStopMarker);
842
+ if (match) {
843
+ var i = match.index + match[0].length;
844
+
845
+ if (match[1])
846
+ return this.closingBracketBlock(session, match[1], row, i);
847
+
848
+ return session.getCommentFoldRange(row, i, -1);
849
+ }
850
+ };
851
+
852
+ this.getSectionRange = function(session, row) {
853
+ var line = session.getLine(row);
854
+ var startIndent = line.search(/\S/);
855
+ var startRow = row;
856
+ var startColumn = line.length;
857
+ row = row + 1;
858
+ var endRow = row;
859
+ var maxRow = session.getLength();
860
+ while (++row < maxRow) {
861
+ line = session.getLine(row);
862
+ var indent = line.search(/\S/);
863
+ if (indent === -1)
864
+ continue;
865
+ if (startIndent > indent)
866
+ break;
867
+ var subRange = this.getFoldWidgetRange(session, "all", row);
868
+
869
+ if (subRange) {
870
+ if (subRange.start.row <= startRow) {
871
+ break;
872
+ } else if (subRange.isMultiLine()) {
873
+ row = subRange.end.row;
874
+ } else if (startIndent == indent) {
875
+ break;
876
+ }
877
+ }
878
+ endRow = row;
879
+ }
880
+
881
+ return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
882
+ };
883
+ this.getCommentRegionBlock = function(session, line, row) {
884
+ var startColumn = line.search(/\s*$/);
885
+ var maxRow = session.getLength();
886
+ var startRow = row;
887
+
888
+ var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
889
+ var depth = 1;
890
+ while (++row < maxRow) {
891
+ line = session.getLine(row);
892
+ var m = re.exec(line);
893
+ if (!m) continue;
894
+ if (m[1]) depth--;
895
+ else depth++;
896
+
897
+ if (!depth) break;
898
+ }
899
+
900
+ var endRow = row;
901
+ if (endRow > startRow) {
902
+ return new Range(startRow, startColumn, endRow, line.length);
903
+ }
904
+ };
905
+
906
+ }).call(FoldMode.prototype);
907
+
908
+ });
909
+
910
+ 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) {
911
+ "use strict";
912
+
913
+ var oop = require("../lib/oop");
914
+ var TextMode = require("./text").Mode;
915
+ var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
916
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
917
+ var WorkerClient = require("../worker/worker_client").WorkerClient;
918
+ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
919
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
920
+
921
+ var Mode = function() {
922
+ this.HighlightRules = JavaScriptHighlightRules;
923
+
924
+ this.$outdent = new MatchingBraceOutdent();
925
+ this.$behaviour = new CstyleBehaviour();
926
+ this.foldingRules = new CStyleFoldMode();
927
+ };
928
+ oop.inherits(Mode, TextMode);
929
+
930
+ (function() {
931
+
932
+ this.lineCommentStart = "//";
933
+ this.blockComment = {start: "/*", end: "*/"};
934
+ this.$quotes = {'"': '"', "'": "'", "`": "`"};
935
+
936
+ this.getNextLineIndent = function(state, line, tab) {
937
+ var indent = this.$getIndent(line);
938
+
939
+ var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
940
+ var tokens = tokenizedLine.tokens;
941
+ var endState = tokenizedLine.state;
942
+
943
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
944
+ return indent;
945
+ }
946
+
947
+ if (state == "start" || state == "no_regex") {
948
+ var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);
949
+ if (match) {
950
+ indent += tab;
951
+ }
952
+ } else if (state == "doc-start") {
953
+ if (endState == "start" || endState == "no_regex") {
954
+ return "";
955
+ }
956
+ var match = line.match(/^\s*(\/?)\*/);
957
+ if (match) {
958
+ if (match[1]) {
959
+ indent += " ";
960
+ }
961
+ indent += "* ";
962
+ }
963
+ }
964
+
965
+ return indent;
966
+ };
967
+
968
+ this.checkOutdent = function(state, line, input) {
969
+ return this.$outdent.checkOutdent(line, input);
970
+ };
971
+
972
+ this.autoOutdent = function(state, doc, row) {
973
+ this.$outdent.autoOutdent(doc, row);
974
+ };
975
+
976
+ this.createWorker = function(session) {
977
+ var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker");
978
+ worker.attachToDocument(session.getDocument());
979
+
980
+ worker.on("annotate", function(results) {
981
+ session.setAnnotations(results.data);
982
+ });
983
+
984
+ worker.on("terminate", function() {
985
+ session.clearAnnotations();
986
+ });
987
+
988
+ return worker;
989
+ };
990
+
991
+ this.$id = "ace/mode/javascript";
992
+ }).call(Mode.prototype);
993
+
994
+ exports.Mode = Mode;
995
+ });
996
+
997
+ define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
998
+ "use strict";
999
+
1000
+ var oop = require("../lib/oop");
1001
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
1002
+
1003
+ var XmlHighlightRules = function(normalize) {
1004
+ var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*";
1005
+
1006
+ this.$rules = {
1007
+ start : [
1008
+ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"},
1009
+ {
1010
+ token : ["punctuation.instruction.xml", "keyword.instruction.xml"],
1011
+ regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction"
1012
+ },
1013
+ {token : "comment.start.xml", regex : "<\\!--", next : "comment"},
1014
+ {
1015
+ token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"],
1016
+ regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true
1017
+ },
1018
+ {include : "tag"},
1019
+ {token : "text.end-tag-open.xml", regex: "</"},
1020
+ {token : "text.tag-open.xml", regex: "<"},
1021
+ {include : "reference"},
1022
+ {defaultToken : "text.xml"}
1023
+ ],
1024
+
1025
+ processing_instruction : [{
1026
+ token : "entity.other.attribute-name.decl-attribute-name.xml",
1027
+ regex : tagRegex
1028
+ }, {
1029
+ token : "keyword.operator.decl-attribute-equals.xml",
1030
+ regex : "="
1031
+ }, {
1032
+ include: "whitespace"
1033
+ }, {
1034
+ include: "string"
1035
+ }, {
1036
+ token : "punctuation.xml-decl.xml",
1037
+ regex : "\\?>",
1038
+ next : "start"
1039
+ }],
1040
+
1041
+ doctype : [
1042
+ {include : "whitespace"},
1043
+ {include : "string"},
1044
+ {token : "xml-pe.doctype.xml", regex : ">", next : "start"},
1045
+ {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"},
1046
+ {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"}
1047
+ ],
1048
+
1049
+ int_subset : [{
1050
+ token : "text.xml",
1051
+ regex : "\\s+"
1052
+ }, {
1053
+ token: "punctuation.int-subset.xml",
1054
+ regex: "]",
1055
+ next: "pop"
1056
+ }, {
1057
+ token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"],
1058
+ regex : "(<\\!)(" + tagRegex + ")",
1059
+ push : [{
1060
+ token : "text",
1061
+ regex : "\\s+"
1062
+ },
1063
+ {
1064
+ token : "punctuation.markup-decl.xml",
1065
+ regex : ">",
1066
+ next : "pop"
1067
+ },
1068
+ {include : "string"}]
1069
+ }],
1070
+
1071
+ cdata : [
1072
+ {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"},
1073
+ {token : "text.xml", regex : "\\s+"},
1074
+ {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"}
1075
+ ],
1076
+
1077
+ comment : [
1078
+ {token : "comment.end.xml", regex : "-->", next : "start"},
1079
+ {defaultToken : "comment.xml"}
1080
+ ],
1081
+
1082
+ reference : [{
1083
+ token : "constant.language.escape.reference.xml",
1084
+ regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
1085
+ }],
1086
+
1087
+ attr_reference : [{
1088
+ token : "constant.language.escape.reference.attribute-value.xml",
1089
+ regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
1090
+ }],
1091
+
1092
+ tag : [{
1093
+ token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"],
1094
+ regex : "(?:(<)|(</))((?:" + tagRegex + ":)?" + tagRegex + ")",
1095
+ next: [
1096
+ {include : "attributes"},
1097
+ {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
1098
+ ]
1099
+ }],
1100
+
1101
+ tag_whitespace : [
1102
+ {token : "text.tag-whitespace.xml", regex : "\\s+"}
1103
+ ],
1104
+ whitespace : [
1105
+ {token : "text.whitespace.xml", regex : "\\s+"}
1106
+ ],
1107
+ string: [{
1108
+ token : "string.xml",
1109
+ regex : "'",
1110
+ push : [
1111
+ {token : "string.xml", regex: "'", next: "pop"},
1112
+ {defaultToken : "string.xml"}
1113
+ ]
1114
+ }, {
1115
+ token : "string.xml",
1116
+ regex : '"',
1117
+ push : [
1118
+ {token : "string.xml", regex: '"', next: "pop"},
1119
+ {defaultToken : "string.xml"}
1120
+ ]
1121
+ }],
1122
+
1123
+ attributes: [{
1124
+ token : "entity.other.attribute-name.xml",
1125
+ regex : tagRegex
1126
+ }, {
1127
+ token : "keyword.operator.attribute-equals.xml",
1128
+ regex : "="
1129
+ }, {
1130
+ include: "tag_whitespace"
1131
+ }, {
1132
+ include: "attribute_value"
1133
+ }],
1134
+
1135
+ attribute_value: [{
1136
+ token : "string.attribute-value.xml",
1137
+ regex : "'",
1138
+ push : [
1139
+ {token : "string.attribute-value.xml", regex: "'", next: "pop"},
1140
+ {include : "attr_reference"},
1141
+ {defaultToken : "string.attribute-value.xml"}
1142
+ ]
1143
+ }, {
1144
+ token : "string.attribute-value.xml",
1145
+ regex : '"',
1146
+ push : [
1147
+ {token : "string.attribute-value.xml", regex: '"', next: "pop"},
1148
+ {include : "attr_reference"},
1149
+ {defaultToken : "string.attribute-value.xml"}
1150
+ ]
1151
+ }]
1152
+ };
1153
+
1154
+ if (this.constructor === XmlHighlightRules)
1155
+ this.normalizeRules();
1156
+ };
1157
+
1158
+
1159
+ (function() {
1160
+
1161
+ this.embedTagRules = function(HighlightRules, prefix, tag){
1162
+ this.$rules.tag.unshift({
1163
+ token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
1164
+ regex : "(<)(" + tag + "(?=\\s|>|$))",
1165
+ next: [
1166
+ {include : "attributes"},
1167
+ {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"}
1168
+ ]
1169
+ });
1170
+
1171
+ this.$rules[tag + "-end"] = [
1172
+ {include : "attributes"},
1173
+ {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start",
1174
+ onMatch : function(value, currentState, stack) {
1175
+ stack.splice(0);
1176
+ return this.token;
1177
+ }}
1178
+ ];
1179
+
1180
+ this.embedRules(HighlightRules, prefix, [{
1181
+ token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"],
1182
+ regex : "(</)(" + tag + "(?=\\s|>|$))",
1183
+ next: tag + "-end"
1184
+ }, {
1185
+ token: "string.cdata.xml",
1186
+ regex : "<\\!\\[CDATA\\["
1187
+ }, {
1188
+ token: "string.cdata.xml",
1189
+ regex : "\\]\\]>"
1190
+ }]);
1191
+ };
1192
+
1193
+ }).call(TextHighlightRules.prototype);
1194
+
1195
+ oop.inherits(XmlHighlightRules, TextHighlightRules);
1196
+
1197
+ exports.XmlHighlightRules = XmlHighlightRules;
1198
+ });
1199
+
1200
+ define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) {
1201
+ "use strict";
1202
+
1203
+ var oop = require("../../lib/oop");
1204
+ var Behaviour = require("../behaviour").Behaviour;
1205
+ var TokenIterator = require("../../token_iterator").TokenIterator;
1206
+ var lang = require("../../lib/lang");
1207
+
1208
+ function is(token, type) {
1209
+ return token && token.type.lastIndexOf(type + ".xml") > -1;
1210
+ }
1211
+
1212
+ var XmlBehaviour = function () {
1213
+
1214
+ this.add("string_dquotes", "insertion", function (state, action, editor, session, text) {
1215
+ if (text == '"' || text == "'") {
1216
+ var quote = text;
1217
+ var selected = session.doc.getTextRange(editor.getSelectionRange());
1218
+ if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) {
1219
+ return {
1220
+ text: quote + selected + quote,
1221
+ selection: false
1222
+ };
1223
+ }
1224
+
1225
+ var cursor = editor.getCursorPosition();
1226
+ var line = session.doc.getLine(cursor.row);
1227
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
1228
+ var iterator = new TokenIterator(session, cursor.row, cursor.column);
1229
+ var token = iterator.getCurrentToken();
1230
+
1231
+ if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) {
1232
+ return {
1233
+ text: "",
1234
+ selection: [1, 1]
1235
+ };
1236
+ }
1237
+
1238
+ if (!token)
1239
+ token = iterator.stepBackward();
1240
+
1241
+ if (!token)
1242
+ return;
1243
+
1244
+ while (is(token, "tag-whitespace") || is(token, "whitespace")) {
1245
+ token = iterator.stepBackward();
1246
+ }
1247
+ var rightSpace = !rightChar || rightChar.match(/\s/);
1248
+ if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) {
1249
+ return {
1250
+ text: quote + quote,
1251
+ selection: [1, 1]
1252
+ };
1253
+ }
1254
+ }
1255
+ });
1256
+
1257
+ this.add("string_dquotes", "deletion", function(state, action, editor, session, range) {
1258
+ var selected = session.doc.getTextRange(range);
1259
+ if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
1260
+ var line = session.doc.getLine(range.start.row);
1261
+ var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
1262
+ if (rightChar == selected) {
1263
+ range.end.column++;
1264
+ return range;
1265
+ }
1266
+ }
1267
+ });
1268
+
1269
+ this.add("autoclosing", "insertion", function (state, action, editor, session, text) {
1270
+ if (text == '>') {
1271
+ var position = editor.getSelectionRange().start;
1272
+ var iterator = new TokenIterator(session, position.row, position.column);
1273
+ var token = iterator.getCurrentToken() || iterator.stepBackward();
1274
+ if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value")))
1275
+ return;
1276
+ if (is(token, "reference.attribute-value"))
1277
+ return;
1278
+ if (is(token, "attribute-value")) {
1279
+ var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;
1280
+ if (position.column < tokenEndColumn)
1281
+ return;
1282
+ if (position.column == tokenEndColumn) {
1283
+ var nextToken = iterator.stepForward();
1284
+ if (nextToken && is(nextToken, "attribute-value"))
1285
+ return;
1286
+ iterator.stepBackward();
1287
+ }
1288
+ }
1289
+
1290
+ if (/^\s*>/.test(session.getLine(position.row).slice(position.column)))
1291
+ return;
1292
+ while (!is(token, "tag-name")) {
1293
+ token = iterator.stepBackward();
1294
+ if (token.value == "<") {
1295
+ token = iterator.stepForward();
1296
+ break;
1297
+ }
1298
+ }
1299
+
1300
+ var tokenRow = iterator.getCurrentTokenRow();
1301
+ var tokenColumn = iterator.getCurrentTokenColumn();
1302
+ if (is(iterator.stepBackward(), "end-tag-open"))
1303
+ return;
1304
+
1305
+ var element = token.value;
1306
+ if (tokenRow == position.row)
1307
+ element = element.substring(0, position.column - tokenColumn);
1308
+
1309
+ if (this.voidElements.hasOwnProperty(element.toLowerCase()))
1310
+ return;
1311
+
1312
+ return {
1313
+ text: ">" + "</" + element + ">",
1314
+ selection: [1, 1]
1315
+ };
1316
+ }
1317
+ });
1318
+
1319
+ this.add("autoindent", "insertion", function (state, action, editor, session, text) {
1320
+ if (text == "\n") {
1321
+ var cursor = editor.getCursorPosition();
1322
+ var line = session.getLine(cursor.row);
1323
+ var iterator = new TokenIterator(session, cursor.row, cursor.column);
1324
+ var token = iterator.getCurrentToken();
1325
+
1326
+ if (token && token.type.indexOf("tag-close") !== -1) {
1327
+ if (token.value == "/>")
1328
+ return;
1329
+ while (token && token.type.indexOf("tag-name") === -1) {
1330
+ token = iterator.stepBackward();
1331
+ }
1332
+
1333
+ if (!token) {
1334
+ return;
1335
+ }
1336
+
1337
+ var tag = token.value;
1338
+ var row = iterator.getCurrentTokenRow();
1339
+ token = iterator.stepBackward();
1340
+ if (!token || token.type.indexOf("end-tag") !== -1) {
1341
+ return;
1342
+ }
1343
+
1344
+ if (this.voidElements && !this.voidElements[tag]) {
1345
+ var nextToken = session.getTokenAt(cursor.row, cursor.column+1);
1346
+ var line = session.getLine(row);
1347
+ var nextIndent = this.$getIndent(line);
1348
+ var indent = nextIndent + session.getTabString();
1349
+
1350
+ if (nextToken && nextToken.value === "</") {
1351
+ return {
1352
+ text: "\n" + indent + "\n" + nextIndent,
1353
+ selection: [1, indent.length, 1, indent.length]
1354
+ };
1355
+ } else {
1356
+ return {
1357
+ text: "\n" + indent
1358
+ };
1359
+ }
1360
+ }
1361
+ }
1362
+ }
1363
+ });
1364
+
1365
+ };
1366
+
1367
+ oop.inherits(XmlBehaviour, Behaviour);
1368
+
1369
+ exports.XmlBehaviour = XmlBehaviour;
1370
+ });
1371
+
1372
+ define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module) {
1373
+ "use strict";
1374
+
1375
+ var oop = require("../../lib/oop");
1376
+ var lang = require("../../lib/lang");
1377
+ var Range = require("../../range").Range;
1378
+ var BaseFoldMode = require("./fold_mode").FoldMode;
1379
+ var TokenIterator = require("../../token_iterator").TokenIterator;
1380
+
1381
+ var FoldMode = exports.FoldMode = function(voidElements, optionalEndTags) {
1382
+ BaseFoldMode.call(this);
1383
+ this.voidElements = voidElements || {};
1384
+ this.optionalEndTags = oop.mixin({}, this.voidElements);
1385
+ if (optionalEndTags)
1386
+ oop.mixin(this.optionalEndTags, optionalEndTags);
1387
+
1388
+ };
1389
+ oop.inherits(FoldMode, BaseFoldMode);
1390
+
1391
+ var Tag = function() {
1392
+ this.tagName = "";
1393
+ this.closing = false;
1394
+ this.selfClosing = false;
1395
+ this.start = {row: 0, column: 0};
1396
+ this.end = {row: 0, column: 0};
1397
+ };
1398
+
1399
+ function is(token, type) {
1400
+ return token.type.lastIndexOf(type + ".xml") > -1;
1401
+ }
1402
+
1403
+ (function() {
1404
+
1405
+ this.getFoldWidget = function(session, foldStyle, row) {
1406
+ var tag = this._getFirstTagInLine(session, row);
1407
+
1408
+ if (!tag)
1409
+ return this.getCommentFoldWidget(session, row);
1410
+
1411
+ if (tag.closing || (!tag.tagName && tag.selfClosing))
1412
+ return foldStyle == "markbeginend" ? "end" : "";
1413
+
1414
+ if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))
1415
+ return "";
1416
+
1417
+ if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))
1418
+ return "";
1419
+
1420
+ return "start";
1421
+ };
1422
+
1423
+ this.getCommentFoldWidget = function(session, row) {
1424
+ if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))
1425
+ return "start";
1426
+ return "";
1427
+ };
1428
+ this._getFirstTagInLine = function(session, row) {
1429
+ var tokens = session.getTokens(row);
1430
+ var tag = new Tag();
1431
+
1432
+ for (var i = 0; i < tokens.length; i++) {
1433
+ var token = tokens[i];
1434
+ if (is(token, "tag-open")) {
1435
+ tag.end.column = tag.start.column + token.value.length;
1436
+ tag.closing = is(token, "end-tag-open");
1437
+ token = tokens[++i];
1438
+ if (!token)
1439
+ return null;
1440
+ tag.tagName = token.value;
1441
+ tag.end.column += token.value.length;
1442
+ for (i++; i < tokens.length; i++) {
1443
+ token = tokens[i];
1444
+ tag.end.column += token.value.length;
1445
+ if (is(token, "tag-close")) {
1446
+ tag.selfClosing = token.value == '/>';
1447
+ break;
1448
+ }
1449
+ }
1450
+ return tag;
1451
+ } else if (is(token, "tag-close")) {
1452
+ tag.selfClosing = token.value == '/>';
1453
+ return tag;
1454
+ }
1455
+ tag.start.column += token.value.length;
1456
+ }
1457
+
1458
+ return null;
1459
+ };
1460
+
1461
+ this._findEndTagInLine = function(session, row, tagName, startColumn) {
1462
+ var tokens = session.getTokens(row);
1463
+ var column = 0;
1464
+ for (var i = 0; i < tokens.length; i++) {
1465
+ var token = tokens[i];
1466
+ column += token.value.length;
1467
+ if (column < startColumn)
1468
+ continue;
1469
+ if (is(token, "end-tag-open")) {
1470
+ token = tokens[i + 1];
1471
+ if (token && token.value == tagName)
1472
+ return true;
1473
+ }
1474
+ }
1475
+ return false;
1476
+ };
1477
+ this._readTagForward = function(iterator) {
1478
+ var token = iterator.getCurrentToken();
1479
+ if (!token)
1480
+ return null;
1481
+
1482
+ var tag = new Tag();
1483
+ do {
1484
+ if (is(token, "tag-open")) {
1485
+ tag.closing = is(token, "end-tag-open");
1486
+ tag.start.row = iterator.getCurrentTokenRow();
1487
+ tag.start.column = iterator.getCurrentTokenColumn();
1488
+ } else if (is(token, "tag-name")) {
1489
+ tag.tagName = token.value;
1490
+ } else if (is(token, "tag-close")) {
1491
+ tag.selfClosing = token.value == "/>";
1492
+ tag.end.row = iterator.getCurrentTokenRow();
1493
+ tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1494
+ iterator.stepForward();
1495
+ return tag;
1496
+ }
1497
+ } while(token = iterator.stepForward());
1498
+
1499
+ return null;
1500
+ };
1501
+
1502
+ this._readTagBackward = function(iterator) {
1503
+ var token = iterator.getCurrentToken();
1504
+ if (!token)
1505
+ return null;
1506
+
1507
+ var tag = new Tag();
1508
+ do {
1509
+ if (is(token, "tag-open")) {
1510
+ tag.closing = is(token, "end-tag-open");
1511
+ tag.start.row = iterator.getCurrentTokenRow();
1512
+ tag.start.column = iterator.getCurrentTokenColumn();
1513
+ iterator.stepBackward();
1514
+ return tag;
1515
+ } else if (is(token, "tag-name")) {
1516
+ tag.tagName = token.value;
1517
+ } else if (is(token, "tag-close")) {
1518
+ tag.selfClosing = token.value == "/>";
1519
+ tag.end.row = iterator.getCurrentTokenRow();
1520
+ tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;
1521
+ }
1522
+ } while(token = iterator.stepBackward());
1523
+
1524
+ return null;
1525
+ };
1526
+
1527
+ this._pop = function(stack, tag) {
1528
+ while (stack.length) {
1529
+
1530
+ var top = stack[stack.length-1];
1531
+ if (!tag || top.tagName == tag.tagName) {
1532
+ return stack.pop();
1533
+ }
1534
+ else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
1535
+ stack.pop();
1536
+ continue;
1537
+ } else {
1538
+ return null;
1539
+ }
1540
+ }
1541
+ };
1542
+
1543
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
1544
+ var firstTag = this._getFirstTagInLine(session, row);
1545
+
1546
+ if (!firstTag) {
1547
+ return this.getCommentFoldWidget(session, row)
1548
+ && session.getCommentFoldRange(row, session.getLine(row).length);
1549
+ }
1550
+
1551
+ var isBackward = firstTag.closing || firstTag.selfClosing;
1552
+ var stack = [];
1553
+ var tag;
1554
+
1555
+ if (!isBackward) {
1556
+ var iterator = new TokenIterator(session, row, firstTag.start.column);
1557
+ var start = {
1558
+ row: row,
1559
+ column: firstTag.start.column + firstTag.tagName.length + 2
1560
+ };
1561
+ if (firstTag.start.row == firstTag.end.row)
1562
+ start.column = firstTag.end.column;
1563
+ while (tag = this._readTagForward(iterator)) {
1564
+ if (tag.selfClosing) {
1565
+ if (!stack.length) {
1566
+ tag.start.column += tag.tagName.length + 2;
1567
+ tag.end.column -= 2;
1568
+ return Range.fromPoints(tag.start, tag.end);
1569
+ } else
1570
+ continue;
1571
+ }
1572
+
1573
+ if (tag.closing) {
1574
+ this._pop(stack, tag);
1575
+ if (stack.length == 0)
1576
+ return Range.fromPoints(start, tag.start);
1577
+ }
1578
+ else {
1579
+ stack.push(tag);
1580
+ }
1581
+ }
1582
+ }
1583
+ else {
1584
+ var iterator = new TokenIterator(session, row, firstTag.end.column);
1585
+ var end = {
1586
+ row: row,
1587
+ column: firstTag.start.column
1588
+ };
1589
+
1590
+ while (tag = this._readTagBackward(iterator)) {
1591
+ if (tag.selfClosing) {
1592
+ if (!stack.length) {
1593
+ tag.start.column += tag.tagName.length + 2;
1594
+ tag.end.column -= 2;
1595
+ return Range.fromPoints(tag.start, tag.end);
1596
+ } else
1597
+ continue;
1598
+ }
1599
+
1600
+ if (!tag.closing) {
1601
+ this._pop(stack, tag);
1602
+ if (stack.length == 0) {
1603
+ tag.start.column += tag.tagName.length + 2;
1604
+ if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)
1605
+ tag.start.column = tag.end.column;
1606
+ return Range.fromPoints(tag.start, end);
1607
+ }
1608
+ }
1609
+ else {
1610
+ stack.push(tag);
1611
+ }
1612
+ }
1613
+ }
1614
+
1615
+ };
1616
+
1617
+ }).call(FoldMode.prototype);
1618
+
1619
+ });
1620
+
1621
+ define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) {
1622
+ "use strict";
1623
+
1624
+ var oop = require("../lib/oop");
1625
+ var lang = require("../lib/lang");
1626
+ var TextMode = require("./text").Mode;
1627
+ var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
1628
+ var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
1629
+ var XmlFoldMode = require("./folding/xml").FoldMode;
1630
+ var WorkerClient = require("../worker/worker_client").WorkerClient;
1631
+
1632
+ var Mode = function() {
1633
+ this.HighlightRules = XmlHighlightRules;
1634
+ this.$behaviour = new XmlBehaviour();
1635
+ this.foldingRules = new XmlFoldMode();
1636
+ };
1637
+
1638
+ oop.inherits(Mode, TextMode);
1639
+
1640
+ (function() {
1641
+
1642
+ this.voidElements = lang.arrayToMap([]);
1643
+
1644
+ this.blockComment = {start: "<!--", end: "-->"};
1645
+
1646
+ this.createWorker = function(session) {
1647
+ var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker");
1648
+ worker.attachToDocument(session.getDocument());
1649
+
1650
+ worker.on("error", function(e) {
1651
+ session.setAnnotations(e.data);
1652
+ });
1653
+
1654
+ worker.on("terminate", function() {
1655
+ session.clearAnnotations();
1656
+ });
1657
+
1658
+ return worker;
1659
+ };
1660
+
1661
+ this.$id = "ace/mode/xml";
1662
+ }).call(Mode.prototype);
1663
+
1664
+ exports.Mode = Mode;
1665
+ });
1666
+
1667
+ define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
1668
+ "use strict";
1669
+
1670
+ var oop = require("../lib/oop");
1671
+ var lang = require("../lib/lang");
1672
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
1673
+ 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";
1674
+ var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters";
1675
+ 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";
1676
+ 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";
1677
+ 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";
1678
+
1679
+ var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))";
1680
+ var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b";
1681
+ 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";
1682
+
1683
+ var CssHighlightRules = function() {
1684
+
1685
+ var keywordMapper = this.createKeywordMapper({
1686
+ "support.function": supportFunction,
1687
+ "support.constant": supportConstant,
1688
+ "support.type": supportType,
1689
+ "support.constant.color": supportConstantColor,
1690
+ "support.constant.fonts": supportConstantFonts
1691
+ }, "text", true);
1692
+ this.$rules = {
1693
+ "start" : [{
1694
+ include : ["strings", "url", "comments"]
1695
+ }, {
1696
+ token: "paren.lparen",
1697
+ regex: "\\{",
1698
+ next: "ruleset"
1699
+ }, {
1700
+ token: "paren.rparen",
1701
+ regex: "\\}"
1702
+ }, {
1703
+ token: "string",
1704
+ regex: "@(?!viewport)",
1705
+ next: "media"
1706
+ }, {
1707
+ token: "keyword",
1708
+ regex: "#[a-z0-9-_]+"
1709
+ }, {
1710
+ token: "keyword",
1711
+ regex: "%"
1712
+ }, {
1713
+ token: "variable",
1714
+ regex: "\\.[a-z0-9-_]+"
1715
+ }, {
1716
+ token: "string",
1717
+ regex: ":[a-z0-9-_]+"
1718
+ }, {
1719
+ token : "constant.numeric",
1720
+ regex : numRe
1721
+ }, {
1722
+ token: "constant",
1723
+ regex: "[a-z0-9-_]+"
1724
+ }, {
1725
+ caseInsensitive: true
1726
+ }],
1727
+
1728
+ "media": [{
1729
+ include : ["strings", "url", "comments"]
1730
+ }, {
1731
+ token: "paren.lparen",
1732
+ regex: "\\{",
1733
+ next: "start"
1734
+ }, {
1735
+ token: "paren.rparen",
1736
+ regex: "\\}",
1737
+ next: "start"
1738
+ }, {
1739
+ token: "string",
1740
+ regex: ";",
1741
+ next: "start"
1742
+ }, {
1743
+ token: "keyword",
1744
+ regex: "(?:media|supports|document|charset|import|namespace|media|supports|document"
1745
+ + "|page|font|keyframes|viewport|counter-style|font-feature-values"
1746
+ + "|swash|ornaments|annotation|stylistic|styleset|character-variant)"
1747
+ }],
1748
+
1749
+ "comments" : [{
1750
+ token: "comment", // multi line comment
1751
+ regex: "\\/\\*",
1752
+ push: [{
1753
+ token : "comment",
1754
+ regex : "\\*\\/",
1755
+ next : "pop"
1756
+ }, {
1757
+ defaultToken : "comment"
1758
+ }]
1759
+ }],
1760
+
1761
+ "ruleset" : [{
1762
+ regex : "-(webkit|ms|moz|o)-",
1763
+ token : "text"
1764
+ }, {
1765
+ token : "punctuation.operator",
1766
+ regex : "[:;]"
1767
+ }, {
1768
+ token : "paren.rparen",
1769
+ regex : "\\}",
1770
+ next : "start"
1771
+ }, {
1772
+ include : ["strings", "url", "comments"]
1773
+ }, {
1774
+ token : ["constant.numeric", "keyword"],
1775
+ 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|%)"
1776
+ }, {
1777
+ token : "constant.numeric",
1778
+ regex : numRe
1779
+ }, {
1780
+ token : "constant.numeric", // hex6 color
1781
+ regex : "#[a-f0-9]{6}"
1782
+ }, {
1783
+ token : "constant.numeric", // hex3 color
1784
+ regex : "#[a-f0-9]{3}"
1785
+ }, {
1786
+ token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"],
1787
+ regex : pseudoElements
1788
+ }, {
1789
+ token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
1790
+ regex : pseudoClasses
1791
+ }, {
1792
+ include: "url"
1793
+ }, {
1794
+ token : keywordMapper,
1795
+ regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
1796
+ }, {
1797
+ caseInsensitive: true
1798
+ }],
1799
+
1800
+ url: [{
1801
+ token : "support.function",
1802
+ regex : "(?:url(:?-prefix)?|domain|regexp)\\(",
1803
+ push: [{
1804
+ token : "support.function",
1805
+ regex : "\\)",
1806
+ next : "pop"
1807
+ }, {
1808
+ defaultToken: "string"
1809
+ }]
1810
+ }],
1811
+
1812
+ strings: [{
1813
+ token : "string.start",
1814
+ regex : "'",
1815
+ push : [{
1816
+ token : "string.end",
1817
+ regex : "'|$",
1818
+ next: "pop"
1819
+ }, {
1820
+ include : "escapes"
1821
+ }, {
1822
+ token : "constant.language.escape",
1823
+ regex : /\\$/,
1824
+ consumeLineEnd: true
1825
+ }, {
1826
+ defaultToken: "string"
1827
+ }]
1828
+ }, {
1829
+ token : "string.start",
1830
+ regex : '"',
1831
+ push : [{
1832
+ token : "string.end",
1833
+ regex : '"|$',
1834
+ next: "pop"
1835
+ }, {
1836
+ include : "escapes"
1837
+ }, {
1838
+ token : "constant.language.escape",
1839
+ regex : /\\$/,
1840
+ consumeLineEnd: true
1841
+ }, {
1842
+ defaultToken: "string"
1843
+ }]
1844
+ }],
1845
+ escapes: [{
1846
+ token : "constant.language.escape",
1847
+ regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/
1848
+ }]
1849
+
1850
+ };
1851
+
1852
+ this.normalizeRules();
1853
+ };
1854
+
1855
+ oop.inherits(CssHighlightRules, TextHighlightRules);
1856
+
1857
+ exports.CssHighlightRules = CssHighlightRules;
1858
+
1859
+ });
1860
+
1861
+ define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) {
1862
+ "use strict";
1863
+
1864
+ var propertyMap = {
1865
+ "background": {"#$0": 1},
1866
+ "background-color": {"#$0": 1, "transparent": 1, "fixed": 1},
1867
+ "background-image": {"url('/$0')": 1},
1868
+ "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1},
1869
+ "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2},
1870
+ "background-attachment": {"scroll": 1, "fixed": 1},
1871
+ "background-size": {"cover": 1, "contain": 1},
1872
+ "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1},
1873
+ "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1},
1874
+ "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1},
1875
+ "border-color": {"#$0": 1},
1876
+ "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2},
1877
+ "border-collapse": {"collapse": 1, "separate": 1},
1878
+ "bottom": {"px": 1, "em": 1, "%": 1},
1879
+ "clear": {"left": 1, "right": 1, "both": 1, "none": 1},
1880
+ "color": {"#$0": 1, "rgb(#$00,0,0)": 1},
1881
+ "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},
1882
+ "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1},
1883
+ "empty-cells": {"show": 1, "hide": 1},
1884
+ "float": {"left": 1, "right": 1, "none": 1},
1885
+ "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},
1886
+ "font-size": {"px": 1, "em": 1, "%": 1},
1887
+ "font-weight": {"bold": 1, "normal": 1},
1888
+ "font-style": {"italic": 1, "normal": 1},
1889
+ "font-variant": {"normal": 1, "small-caps": 1},
1890
+ "height": {"px": 1, "em": 1, "%": 1},
1891
+ "left": {"px": 1, "em": 1, "%": 1},
1892
+ "letter-spacing": {"normal": 1},
1893
+ "line-height": {"normal": 1},
1894
+ "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},
1895
+ "margin": {"px": 1, "em": 1, "%": 1},
1896
+ "margin-right": {"px": 1, "em": 1, "%": 1},
1897
+ "margin-left": {"px": 1, "em": 1, "%": 1},
1898
+ "margin-top": {"px": 1, "em": 1, "%": 1},
1899
+ "margin-bottom": {"px": 1, "em": 1, "%": 1},
1900
+ "max-height": {"px": 1, "em": 1, "%": 1},
1901
+ "max-width": {"px": 1, "em": 1, "%": 1},
1902
+ "min-height": {"px": 1, "em": 1, "%": 1},
1903
+ "min-width": {"px": 1, "em": 1, "%": 1},
1904
+ "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1905
+ "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1906
+ "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1},
1907
+ "padding": {"px": 1, "em": 1, "%": 1},
1908
+ "padding-top": {"px": 1, "em": 1, "%": 1},
1909
+ "padding-right": {"px": 1, "em": 1, "%": 1},
1910
+ "padding-bottom": {"px": 1, "em": 1, "%": 1},
1911
+ "padding-left": {"px": 1, "em": 1, "%": 1},
1912
+ "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1913
+ "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1},
1914
+ "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1},
1915
+ "right": {"px": 1, "em": 1, "%": 1},
1916
+ "table-layout": {"fixed": 1, "auto": 1},
1917
+ "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1},
1918
+ "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1},
1919
+ "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1},
1920
+ "top": {"px": 1, "em": 1, "%": 1},
1921
+ "vertical-align": {"top": 1, "bottom": 1},
1922
+ "visibility": {"hidden": 1, "visible": 1},
1923
+ "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1},
1924
+ "width": {"px": 1, "em": 1, "%": 1},
1925
+ "word-spacing": {"normal": 1},
1926
+ "filter": {"alpha(opacity=$0100)": 1},
1927
+
1928
+ "text-shadow": {"$02px 2px 2px #777": 1},
1929
+ "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1},
1930
+ "-moz-border-radius": 1,
1931
+ "-moz-border-radius-topright": 1,
1932
+ "-moz-border-radius-bottomright": 1,
1933
+ "-moz-border-radius-topleft": 1,
1934
+ "-moz-border-radius-bottomleft": 1,
1935
+ "-webkit-border-radius": 1,
1936
+ "-webkit-border-top-right-radius": 1,
1937
+ "-webkit-border-top-left-radius": 1,
1938
+ "-webkit-border-bottom-right-radius": 1,
1939
+ "-webkit-border-bottom-left-radius": 1,
1940
+ "-moz-box-shadow": 1,
1941
+ "-webkit-box-shadow": 1,
1942
+ "transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1943
+ "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1},
1944
+ "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 }
1945
+ };
1946
+
1947
+ var CssCompletions = function() {
1948
+
1949
+ };
1950
+
1951
+ (function() {
1952
+
1953
+ this.completionsDefined = false;
1954
+
1955
+ this.defineCompletions = function() {
1956
+ if (document) {
1957
+ var style = document.createElement('c').style;
1958
+
1959
+ for (var i in style) {
1960
+ if (typeof style[i] !== 'string')
1961
+ continue;
1962
+
1963
+ var name = i.replace(/[A-Z]/g, function(x) {
1964
+ return '-' + x.toLowerCase();
1965
+ });
1966
+
1967
+ if (!propertyMap.hasOwnProperty(name))
1968
+ propertyMap[name] = 1;
1969
+ }
1970
+ }
1971
+
1972
+ this.completionsDefined = true;
1973
+ };
1974
+
1975
+ this.getCompletions = function(state, session, pos, prefix) {
1976
+ if (!this.completionsDefined) {
1977
+ this.defineCompletions();
1978
+ }
1979
+
1980
+ var token = session.getTokenAt(pos.row, pos.column);
1981
+
1982
+ if (!token)
1983
+ return [];
1984
+ if (state==='ruleset'){
1985
+ var line = session.getLine(pos.row).substr(0, pos.column);
1986
+ if (/:[^;]+$/.test(line)) {
1987
+ /([\w\-]+):[^:]*$/.test(line);
1988
+
1989
+ return this.getPropertyValueCompletions(state, session, pos, prefix);
1990
+ } else {
1991
+ return this.getPropertyCompletions(state, session, pos, prefix);
1992
+ }
1993
+ }
1994
+
1995
+ return [];
1996
+ };
1997
+
1998
+ this.getPropertyCompletions = function(state, session, pos, prefix) {
1999
+ var properties = Object.keys(propertyMap);
2000
+ return properties.map(function(property){
2001
+ return {
2002
+ caption: property,
2003
+ snippet: property + ': $0;',
2004
+ meta: "property",
2005
+ score: 1000000
2006
+ };
2007
+ });
2008
+ };
2009
+
2010
+ this.getPropertyValueCompletions = function(state, session, pos, prefix) {
2011
+ var line = session.getLine(pos.row).substr(0, pos.column);
2012
+ var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1];
2013
+
2014
+ if (!property)
2015
+ return [];
2016
+ var values = [];
2017
+ if (property in propertyMap && typeof propertyMap[property] === "object") {
2018
+ values = Object.keys(propertyMap[property]);
2019
+ }
2020
+ return values.map(function(value){
2021
+ return {
2022
+ caption: value,
2023
+ snippet: value,
2024
+ meta: "property value",
2025
+ score: 1000000
2026
+ };
2027
+ });
2028
+ };
2029
+
2030
+ }).call(CssCompletions.prototype);
2031
+
2032
+ exports.CssCompletions = CssCompletions;
2033
+ });
2034
+
2035
+ 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) {
2036
+ "use strict";
2037
+
2038
+ var oop = require("../../lib/oop");
2039
+ var Behaviour = require("../behaviour").Behaviour;
2040
+ var CstyleBehaviour = require("./cstyle").CstyleBehaviour;
2041
+ var TokenIterator = require("../../token_iterator").TokenIterator;
2042
+
2043
+ var CssBehaviour = function () {
2044
+
2045
+ this.inherit(CstyleBehaviour);
2046
+
2047
+ this.add("colon", "insertion", function (state, action, editor, session, text) {
2048
+ if (text === ':' && editor.selection.isEmpty()) {
2049
+ var cursor = editor.getCursorPosition();
2050
+ var iterator = new TokenIterator(session, cursor.row, cursor.column);
2051
+ var token = iterator.getCurrentToken();
2052
+ if (token && token.value.match(/\s+/)) {
2053
+ token = iterator.stepBackward();
2054
+ }
2055
+ if (token && token.type === 'support.type') {
2056
+ var line = session.doc.getLine(cursor.row);
2057
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
2058
+ if (rightChar === ':') {
2059
+ return {
2060
+ text: '',
2061
+ selection: [1, 1]
2062
+ };
2063
+ }
2064
+ if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) {
2065
+ return {
2066
+ text: ':;',
2067
+ selection: [1, 1]
2068
+ };
2069
+ }
2070
+ }
2071
+ }
2072
+ });
2073
+
2074
+ this.add("colon", "deletion", function (state, action, editor, session, range) {
2075
+ var selected = session.doc.getTextRange(range);
2076
+ if (!range.isMultiLine() && selected === ':') {
2077
+ var cursor = editor.getCursorPosition();
2078
+ var iterator = new TokenIterator(session, cursor.row, cursor.column);
2079
+ var token = iterator.getCurrentToken();
2080
+ if (token && token.value.match(/\s+/)) {
2081
+ token = iterator.stepBackward();
2082
+ }
2083
+ if (token && token.type === 'support.type') {
2084
+ var line = session.doc.getLine(range.start.row);
2085
+ var rightChar = line.substring(range.end.column, range.end.column + 1);
2086
+ if (rightChar === ';') {
2087
+ range.end.column ++;
2088
+ return range;
2089
+ }
2090
+ }
2091
+ }
2092
+ });
2093
+
2094
+ this.add("semicolon", "insertion", function (state, action, editor, session, text) {
2095
+ if (text === ';' && editor.selection.isEmpty()) {
2096
+ var cursor = editor.getCursorPosition();
2097
+ var line = session.doc.getLine(cursor.row);
2098
+ var rightChar = line.substring(cursor.column, cursor.column + 1);
2099
+ if (rightChar === ';') {
2100
+ return {
2101
+ text: '',
2102
+ selection: [1, 1]
2103
+ };
2104
+ }
2105
+ }
2106
+ });
2107
+
2108
+ this.add("!important", "insertion", function (state, action, editor, session, text) {
2109
+ if (text === '!' && editor.selection.isEmpty()) {
2110
+ var cursor = editor.getCursorPosition();
2111
+ var line = session.doc.getLine(cursor.row);
2112
+
2113
+ if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) {
2114
+ return {
2115
+ text: '!important',
2116
+ selection: [10, 10]
2117
+ };
2118
+ }
2119
+ }
2120
+ });
2121
+
2122
+ };
2123
+ oop.inherits(CssBehaviour, CstyleBehaviour);
2124
+
2125
+ exports.CssBehaviour = CssBehaviour;
2126
+ });
2127
+
2128
+ 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) {
2129
+ "use strict";
2130
+
2131
+ var oop = require("../lib/oop");
2132
+ var TextMode = require("./text").Mode;
2133
+ var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
2134
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
2135
+ var WorkerClient = require("../worker/worker_client").WorkerClient;
2136
+ var CssCompletions = require("./css_completions").CssCompletions;
2137
+ var CssBehaviour = require("./behaviour/css").CssBehaviour;
2138
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
2139
+
2140
+ var Mode = function() {
2141
+ this.HighlightRules = CssHighlightRules;
2142
+ this.$outdent = new MatchingBraceOutdent();
2143
+ this.$behaviour = new CssBehaviour();
2144
+ this.$completer = new CssCompletions();
2145
+ this.foldingRules = new CStyleFoldMode();
2146
+ };
2147
+ oop.inherits(Mode, TextMode);
2148
+
2149
+ (function() {
2150
+
2151
+ this.foldingRules = "cStyle";
2152
+ this.blockComment = {start: "/*", end: "*/"};
2153
+
2154
+ this.getNextLineIndent = function(state, line, tab) {
2155
+ var indent = this.$getIndent(line);
2156
+ var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
2157
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
2158
+ return indent;
2159
+ }
2160
+
2161
+ var match = line.match(/^.*\{\s*$/);
2162
+ if (match) {
2163
+ indent += tab;
2164
+ }
2165
+
2166
+ return indent;
2167
+ };
2168
+
2169
+ this.checkOutdent = function(state, line, input) {
2170
+ return this.$outdent.checkOutdent(line, input);
2171
+ };
2172
+
2173
+ this.autoOutdent = function(state, doc, row) {
2174
+ this.$outdent.autoOutdent(doc, row);
2175
+ };
2176
+
2177
+ this.getCompletions = function(state, session, pos, prefix) {
2178
+ return this.$completer.getCompletions(state, session, pos, prefix);
2179
+ };
2180
+
2181
+ this.createWorker = function(session) {
2182
+ var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker");
2183
+ worker.attachToDocument(session.getDocument());
2184
+
2185
+ worker.on("annotate", function(e) {
2186
+ session.setAnnotations(e.data);
2187
+ });
2188
+
2189
+ worker.on("terminate", function() {
2190
+ session.clearAnnotations();
2191
+ });
2192
+
2193
+ return worker;
2194
+ };
2195
+
2196
+ this.$id = "ace/mode/css";
2197
+ }).call(Mode.prototype);
2198
+
2199
+ exports.Mode = Mode;
2200
+
2201
+ });
2202
+
2203
+ 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) {
2204
+ "use strict";
2205
+
2206
+ var oop = require("../lib/oop");
2207
+ var lang = require("../lib/lang");
2208
+ var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules;
2209
+ var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules;
2210
+ var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules;
2211
+
2212
+ var tagMap = lang.createMap({
2213
+ a : 'anchor',
2214
+ button : 'form',
2215
+ form : 'form',
2216
+ img : 'image',
2217
+ input : 'form',
2218
+ label : 'form',
2219
+ option : 'form',
2220
+ script : 'script',
2221
+ select : 'form',
2222
+ textarea : 'form',
2223
+ style : 'style',
2224
+ table : 'table',
2225
+ tbody : 'table',
2226
+ td : 'table',
2227
+ tfoot : 'table',
2228
+ th : 'table',
2229
+ tr : 'table'
2230
+ });
2231
+
2232
+ var HtmlHighlightRules = function() {
2233
+ XmlHighlightRules.call(this);
2234
+
2235
+ this.addRules({
2236
+ attributes: [{
2237
+ include : "tag_whitespace"
2238
+ }, {
2239
+ token : "entity.other.attribute-name.xml",
2240
+ regex : "[-_a-zA-Z0-9:.]+"
2241
+ }, {
2242
+ token : "keyword.operator.attribute-equals.xml",
2243
+ regex : "=",
2244
+ push : [{
2245
+ include: "tag_whitespace"
2246
+ }, {
2247
+ token : "string.unquoted.attribute-value.html",
2248
+ regex : "[^<>='\"`\\s]+",
2249
+ next : "pop"
2250
+ }, {
2251
+ token : "empty",
2252
+ regex : "",
2253
+ next : "pop"
2254
+ }]
2255
+ }, {
2256
+ include : "attribute_value"
2257
+ }],
2258
+ tag: [{
2259
+ token : function(start, tag) {
2260
+ var group = tagMap[tag];
2261
+ return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml",
2262
+ "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"];
2263
+ },
2264
+ regex : "(</?)([-_a-zA-Z0-9:.]+)",
2265
+ next: "tag_stuff"
2266
+ }],
2267
+ tag_stuff: [
2268
+ {include : "attributes"},
2269
+ {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : "start"}
2270
+ ]
2271
+ });
2272
+
2273
+ this.embedTagRules(CssHighlightRules, "css-", "style");
2274
+ this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script");
2275
+
2276
+ if (this.constructor === HtmlHighlightRules)
2277
+ this.normalizeRules();
2278
+ };
2279
+
2280
+ oop.inherits(HtmlHighlightRules, XmlHighlightRules);
2281
+
2282
+ exports.HtmlHighlightRules = HtmlHighlightRules;
2283
+ });
2284
+
2285
+ define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) {
2286
+ "use strict";
2287
+
2288
+ var oop = require("../../lib/oop");
2289
+ var BaseFoldMode = require("./fold_mode").FoldMode;
2290
+
2291
+ var FoldMode = exports.FoldMode = function(defaultMode, subModes) {
2292
+ this.defaultMode = defaultMode;
2293
+ this.subModes = subModes;
2294
+ };
2295
+ oop.inherits(FoldMode, BaseFoldMode);
2296
+
2297
+ (function() {
2298
+
2299
+
2300
+ this.$getMode = function(state) {
2301
+ if (typeof state != "string")
2302
+ state = state[0];
2303
+ for (var key in this.subModes) {
2304
+ if (state.indexOf(key) === 0)
2305
+ return this.subModes[key];
2306
+ }
2307
+ return null;
2308
+ };
2309
+
2310
+ this.$tryMode = function(state, session, foldStyle, row) {
2311
+ var mode = this.$getMode(state);
2312
+ return (mode ? mode.getFoldWidget(session, foldStyle, row) : "");
2313
+ };
2314
+
2315
+ this.getFoldWidget = function(session, foldStyle, row) {
2316
+ return (
2317
+ this.$tryMode(session.getState(row-1), session, foldStyle, row) ||
2318
+ this.$tryMode(session.getState(row), session, foldStyle, row) ||
2319
+ this.defaultMode.getFoldWidget(session, foldStyle, row)
2320
+ );
2321
+ };
2322
+
2323
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
2324
+ var mode = this.$getMode(session.getState(row-1));
2325
+
2326
+ if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2327
+ mode = this.$getMode(session.getState(row));
2328
+
2329
+ if (!mode || !mode.getFoldWidget(session, foldStyle, row))
2330
+ mode = this.defaultMode;
2331
+
2332
+ return mode.getFoldWidgetRange(session, foldStyle, row);
2333
+ };
2334
+
2335
+ }).call(FoldMode.prototype);
2336
+
2337
+ });
2338
+
2339
+ 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) {
2340
+ "use strict";
2341
+
2342
+ var oop = require("../../lib/oop");
2343
+ var MixedFoldMode = require("./mixed").FoldMode;
2344
+ var XmlFoldMode = require("./xml").FoldMode;
2345
+ var CStyleFoldMode = require("./cstyle").FoldMode;
2346
+
2347
+ var FoldMode = exports.FoldMode = function(voidElements, optionalTags) {
2348
+ MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {
2349
+ "js-": new CStyleFoldMode(),
2350
+ "css-": new CStyleFoldMode()
2351
+ });
2352
+ };
2353
+
2354
+ oop.inherits(FoldMode, MixedFoldMode);
2355
+
2356
+ });
2357
+
2358
+ define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) {
2359
+ "use strict";
2360
+
2361
+ var TokenIterator = require("../token_iterator").TokenIterator;
2362
+
2363
+ var commonAttributes = [
2364
+ "accesskey",
2365
+ "class",
2366
+ "contenteditable",
2367
+ "contextmenu",
2368
+ "dir",
2369
+ "draggable",
2370
+ "dropzone",
2371
+ "hidden",
2372
+ "id",
2373
+ "inert",
2374
+ "itemid",
2375
+ "itemprop",
2376
+ "itemref",
2377
+ "itemscope",
2378
+ "itemtype",
2379
+ "lang",
2380
+ "spellcheck",
2381
+ "style",
2382
+ "tabindex",
2383
+ "title",
2384
+ "translate"
2385
+ ];
2386
+
2387
+ var eventAttributes = [
2388
+ "onabort",
2389
+ "onblur",
2390
+ "oncancel",
2391
+ "oncanplay",
2392
+ "oncanplaythrough",
2393
+ "onchange",
2394
+ "onclick",
2395
+ "onclose",
2396
+ "oncontextmenu",
2397
+ "oncuechange",
2398
+ "ondblclick",
2399
+ "ondrag",
2400
+ "ondragend",
2401
+ "ondragenter",
2402
+ "ondragleave",
2403
+ "ondragover",
2404
+ "ondragstart",
2405
+ "ondrop",
2406
+ "ondurationchange",
2407
+ "onemptied",
2408
+ "onended",
2409
+ "onerror",
2410
+ "onfocus",
2411
+ "oninput",
2412
+ "oninvalid",
2413
+ "onkeydown",
2414
+ "onkeypress",
2415
+ "onkeyup",
2416
+ "onload",
2417
+ "onloadeddata",
2418
+ "onloadedmetadata",
2419
+ "onloadstart",
2420
+ "onmousedown",
2421
+ "onmousemove",
2422
+ "onmouseout",
2423
+ "onmouseover",
2424
+ "onmouseup",
2425
+ "onmousewheel",
2426
+ "onpause",
2427
+ "onplay",
2428
+ "onplaying",
2429
+ "onprogress",
2430
+ "onratechange",
2431
+ "onreset",
2432
+ "onscroll",
2433
+ "onseeked",
2434
+ "onseeking",
2435
+ "onselect",
2436
+ "onshow",
2437
+ "onstalled",
2438
+ "onsubmit",
2439
+ "onsuspend",
2440
+ "ontimeupdate",
2441
+ "onvolumechange",
2442
+ "onwaiting"
2443
+ ];
2444
+
2445
+ var globalAttributes = commonAttributes.concat(eventAttributes);
2446
+
2447
+ var attributeMap = {
2448
+ "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},
2449
+ "abbr": {},
2450
+ "address": {},
2451
+ "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1},
2452
+ "article": {"pubdate": 1},
2453
+ "aside": {},
2454
+ "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }},
2455
+ "b": {},
2456
+ "base": {"href": 1, "target": 1},
2457
+ "bdi": {},
2458
+ "bdo": {},
2459
+ "blockquote": {"cite": 1},
2460
+ "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},
2461
+ "br": {},
2462
+ "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}},
2463
+ "canvas": {"width": 1, "height": 1},
2464
+ "caption": {},
2465
+ "cite": {},
2466
+ "code": {},
2467
+ "col": {"span": 1},
2468
+ "colgroup": {"span": 1},
2469
+ "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1},
2470
+ "data": {},
2471
+ "datalist": {},
2472
+ "dd": {},
2473
+ "del": {"cite": 1, "datetime": 1},
2474
+ "details": {"open": 1},
2475
+ "dfn": {},
2476
+ "dialog": {"open": 1},
2477
+ "div": {},
2478
+ "dl": {},
2479
+ "dt": {},
2480
+ "em": {},
2481
+ "embed": {"src": 1, "height": 1, "width": 1, "type": 1},
2482
+ "fieldset": {"disabled": 1, "form": 1, "name": 1},
2483
+ "figcaption": {},
2484
+ "figure": {},
2485
+ "footer": {},
2486
+ "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}},
2487
+ "h1": {},
2488
+ "h2": {},
2489
+ "h3": {},
2490
+ "h4": {},
2491
+ "h5": {},
2492
+ "h6": {},
2493
+ "head": {},
2494
+ "header": {},
2495
+ "hr": {},
2496
+ "html": {"manifest": 1},
2497
+ "i": {},
2498
+ "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}},
2499
+ "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1},
2500
+ "input": {
2501
+ "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},
2502
+ "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},
2503
+ "ins": {"cite": 1, "datetime": 1},
2504
+ "kbd": {},
2505
+ "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1},
2506
+ "label": {"form": 1, "for": 1},
2507
+ "legend": {},
2508
+ "li": {"value": 1},
2509
+ "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},
2510
+ "main": {},
2511
+ "map": {"name": 1},
2512
+ "mark": {},
2513
+ "math": {},
2514
+ "menu": {"type": 1, "label": 1},
2515
+ "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1},
2516
+ "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1},
2517
+ "nav": {},
2518
+ "noscript": {"href": 1},
2519
+ "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1},
2520
+ "ol": {"start": 1, "reversed": 1},
2521
+ "optgroup": {"disabled": 1, "label": 1},
2522
+ "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1},
2523
+ "output": {"for": 1, "form": 1, "name": 1},
2524
+ "p": {},
2525
+ "param": {"name": 1, "value": 1},
2526
+ "pre": {},
2527
+ "progress": {"value": 1, "max": 1},
2528
+ "q": {"cite": 1},
2529
+ "rp": {},
2530
+ "rt": {},
2531
+ "ruby": {},
2532
+ "s": {},
2533
+ "samp": {},
2534
+ "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1},
2535
+ "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}},
2536
+ "small": {},
2537
+ "source": {"src": 1, "type": 1, "media": 1},
2538
+ "span": {},
2539
+ "strong": {},
2540
+ "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1},
2541
+ "sub": {},
2542
+ "sup": {},
2543
+ "svg": {},
2544
+ "table": {"summary": 1},
2545
+ "tbody": {},
2546
+ "td": {"headers": 1, "rowspan": 1, "colspan": 1},
2547
+ "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}},
2548
+ "tfoot": {},
2549
+ "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1},
2550
+ "thead": {},
2551
+ "time": {"datetime": 1},
2552
+ "title": {},
2553
+ "tr": {},
2554
+ "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1},
2555
+ "section": {},
2556
+ "summary": {},
2557
+ "u": {},
2558
+ "ul": {},
2559
+ "var": {},
2560
+ "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}},
2561
+ "wbr": {}
2562
+ };
2563
+
2564
+ var elements = Object.keys(attributeMap);
2565
+
2566
+ function is(token, type) {
2567
+ return token.type.lastIndexOf(type + ".xml") > -1;
2568
+ }
2569
+
2570
+ function findTagName(session, pos) {
2571
+ var iterator = new TokenIterator(session, pos.row, pos.column);
2572
+ var token = iterator.getCurrentToken();
2573
+ while (token && !is(token, "tag-name")){
2574
+ token = iterator.stepBackward();
2575
+ }
2576
+ if (token)
2577
+ return token.value;
2578
+ }
2579
+
2580
+ function findAttributeName(session, pos) {
2581
+ var iterator = new TokenIterator(session, pos.row, pos.column);
2582
+ var token = iterator.getCurrentToken();
2583
+ while (token && !is(token, "attribute-name")){
2584
+ token = iterator.stepBackward();
2585
+ }
2586
+ if (token)
2587
+ return token.value;
2588
+ }
2589
+
2590
+ var HtmlCompletions = function() {
2591
+
2592
+ };
2593
+
2594
+ (function() {
2595
+
2596
+ this.getCompletions = function(state, session, pos, prefix) {
2597
+ var token = session.getTokenAt(pos.row, pos.column);
2598
+
2599
+ if (!token)
2600
+ return [];
2601
+ if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open"))
2602
+ return this.getTagCompletions(state, session, pos, prefix);
2603
+ if (is(token, "tag-whitespace") || is(token, "attribute-name"))
2604
+ return this.getAttributeCompletions(state, session, pos, prefix);
2605
+ if (is(token, "attribute-value"))
2606
+ return this.getAttributeValueCompletions(state, session, pos, prefix);
2607
+ var line = session.getLine(pos.row).substr(0, pos.column);
2608
+ if (/&[a-z]*$/i.test(line))
2609
+ return this.getHTMLEntityCompletions(state, session, pos, prefix);
2610
+
2611
+ return [];
2612
+ };
2613
+
2614
+ this.getTagCompletions = function(state, session, pos, prefix) {
2615
+ return elements.map(function(element){
2616
+ return {
2617
+ value: element,
2618
+ meta: "tag",
2619
+ score: 1000000
2620
+ };
2621
+ });
2622
+ };
2623
+
2624
+ this.getAttributeCompletions = function(state, session, pos, prefix) {
2625
+ var tagName = findTagName(session, pos);
2626
+ if (!tagName)
2627
+ return [];
2628
+ var attributes = globalAttributes;
2629
+ if (tagName in attributeMap) {
2630
+ attributes = attributes.concat(Object.keys(attributeMap[tagName]));
2631
+ }
2632
+ return attributes.map(function(attribute){
2633
+ return {
2634
+ caption: attribute,
2635
+ snippet: attribute + '="$0"',
2636
+ meta: "attribute",
2637
+ score: 1000000
2638
+ };
2639
+ });
2640
+ };
2641
+
2642
+ this.getAttributeValueCompletions = function(state, session, pos, prefix) {
2643
+ var tagName = findTagName(session, pos);
2644
+ var attributeName = findAttributeName(session, pos);
2645
+
2646
+ if (!tagName)
2647
+ return [];
2648
+ var values = [];
2649
+ if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") {
2650
+ values = Object.keys(attributeMap[tagName][attributeName]);
2651
+ }
2652
+ return values.map(function(value){
2653
+ return {
2654
+ caption: value,
2655
+ snippet: value,
2656
+ meta: "attribute value",
2657
+ score: 1000000
2658
+ };
2659
+ });
2660
+ };
2661
+
2662
+ this.getHTMLEntityCompletions = function(state, session, pos, prefix) {
2663
+ 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;'];
2664
+
2665
+ return values.map(function(value){
2666
+ return {
2667
+ caption: value,
2668
+ snippet: value,
2669
+ meta: "html entity",
2670
+ score: 1000000
2671
+ };
2672
+ });
2673
+ };
2674
+
2675
+ }).call(HtmlCompletions.prototype);
2676
+
2677
+ exports.HtmlCompletions = HtmlCompletions;
2678
+ });
2679
+
2680
+ 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) {
2681
+ "use strict";
2682
+
2683
+ var oop = require("../lib/oop");
2684
+ var lang = require("../lib/lang");
2685
+ var TextMode = require("./text").Mode;
2686
+ var JavaScriptMode = require("./javascript").Mode;
2687
+ var CssMode = require("./css").Mode;
2688
+ var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
2689
+ var XmlBehaviour = require("./behaviour/xml").XmlBehaviour;
2690
+ var HtmlFoldMode = require("./folding/html").FoldMode;
2691
+ var HtmlCompletions = require("./html_completions").HtmlCompletions;
2692
+ var WorkerClient = require("../worker/worker_client").WorkerClient;
2693
+ var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"];
2694
+ var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"];
2695
+
2696
+ var Mode = function(options) {
2697
+ this.fragmentContext = options && options.fragmentContext;
2698
+ this.HighlightRules = HtmlHighlightRules;
2699
+ this.$behaviour = new XmlBehaviour();
2700
+ this.$completer = new HtmlCompletions();
2701
+
2702
+ this.createModeDelegates({
2703
+ "js-": JavaScriptMode,
2704
+ "css-": CssMode
2705
+ });
2706
+
2707
+ this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));
2708
+ };
2709
+ oop.inherits(Mode, TextMode);
2710
+
2711
+ (function() {
2712
+
2713
+ this.blockComment = {start: "<!--", end: "-->"};
2714
+
2715
+ this.voidElements = lang.arrayToMap(voidElements);
2716
+
2717
+ this.getNextLineIndent = function(state, line, tab) {
2718
+ return this.$getIndent(line);
2719
+ };
2720
+
2721
+ this.checkOutdent = function(state, line, input) {
2722
+ return false;
2723
+ };
2724
+
2725
+ this.getCompletions = function(state, session, pos, prefix) {
2726
+ return this.$completer.getCompletions(state, session, pos, prefix);
2727
+ };
2728
+
2729
+ this.createWorker = function(session) {
2730
+ if (this.constructor != Mode)
2731
+ return;
2732
+ var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker");
2733
+ worker.attachToDocument(session.getDocument());
2734
+
2735
+ if (this.fragmentContext)
2736
+ worker.call("setOptions", [{context: this.fragmentContext}]);
2737
+
2738
+ worker.on("error", function(e) {
2739
+ session.setAnnotations(e.data);
2740
+ });
2741
+
2742
+ worker.on("terminate", function() {
2743
+ session.clearAnnotations();
2744
+ });
2745
+
2746
+ return worker;
2747
+ };
2748
+
2749
+ this.$id = "ace/mode/html";
2750
+ }).call(Mode.prototype);
2751
+
2752
+ exports.Mode = Mode;
2753
+ });
2754
+
2755
+ define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) {
2756
+ "use strict";
2757
+
2758
+ var modes = require("../config").$modes;
2759
+
2760
+ var oop = require("../lib/oop");
2761
+ var lang = require("../lib/lang");
2762
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
2763
+ var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
2764
+
2765
+ var escaped = function(ch) {
2766
+ return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*";
2767
+ };
2768
+
2769
+ var MarkdownHighlightRules = function() {
2770
+ HtmlHighlightRules.call(this);
2771
+ var codeBlockStartRule = {
2772
+ token : "support.function",
2773
+ regex : /^\s*(```+[^`]*|~~~+[^~]*)$/,
2774
+ onMatch: function(value, state, stack, line) {
2775
+ var m = value.match(/^(\s*)([`~]+)(.*)/);
2776
+ var language = /[\w-]+|$/.exec(m[3])[0];
2777
+ if (!modes[language])
2778
+ language = "";
2779
+ stack.unshift("githubblock", [], [m[1], m[2], language], state);
2780
+ return this.token;
2781
+ },
2782
+ next : "githubblock"
2783
+ };
2784
+ var codeBlockRules = [{
2785
+ token : "support.function",
2786
+ regex : ".*",
2787
+ onMatch: function(value, state, stack, line) {
2788
+ var embedState = stack[1];
2789
+ var indent = stack[2][0];
2790
+ var endMarker = stack[2][1];
2791
+ var language = stack[2][2];
2792
+
2793
+ var m = /^(\s*)(`+|~+)\s*$/.exec(value);
2794
+ if (
2795
+ m && m[1].length < indent.length + 3
2796
+ && m[2].length >= endMarker.length && m[2][0] == endMarker[0]
2797
+ ) {
2798
+ stack.splice(0, 3);
2799
+ this.next = stack.shift();
2800
+ return this.token;
2801
+ }
2802
+ this.next = "";
2803
+ if (language && modes[language]) {
2804
+ var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0));
2805
+ stack[1] = data.state;
2806
+ return data.tokens;
2807
+ }
2808
+ return this.token;
2809
+ }
2810
+ }];
2811
+
2812
+ this.$rules["start"].unshift({
2813
+ token : "empty_line",
2814
+ regex : '^$',
2815
+ next: "allowBlock"
2816
+ }, { // h1
2817
+ token: "markup.heading.1",
2818
+ regex: "^=+(?=\\s*$)"
2819
+ }, { // h2
2820
+ token: "markup.heading.2",
2821
+ regex: "^\\-+(?=\\s*$)"
2822
+ }, {
2823
+ token : function(value) {
2824
+ return "markup.heading." + value.length;
2825
+ },
2826
+ regex : /^#{1,6}(?=\s|$)/,
2827
+ next : "header"
2828
+ },
2829
+ codeBlockStartRule,
2830
+ { // block quote
2831
+ token : "string.blockquote",
2832
+ regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
2833
+ next : "blockquote"
2834
+ }, { // HR * - _
2835
+ token : "constant",
2836
+ regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",
2837
+ next: "allowBlock"
2838
+ }, { // list
2839
+ token : "markup.list",
2840
+ regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
2841
+ next : "listblock-start"
2842
+ }, {
2843
+ include : "basic"
2844
+ });
2845
+
2846
+ this.addRules({
2847
+ "basic" : [{
2848
+ token : "constant.language.escape",
2849
+ regex : /\\[\\`*_{}\[\]()#+\-.!]/
2850
+ }, { // code span `
2851
+ token : "support.function",
2852
+ regex : "(`+)(.*?[^`])(\\1)"
2853
+ }, { // reference
2854
+ token : ["text", "constant", "text", "url", "string", "text"],
2855
+ regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$"
2856
+ }, { // link by reference
2857
+ token : ["text", "string", "text", "constant", "text"],
2858
+ regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])"
2859
+ }, { // link by url
2860
+ token : ["text", "string", "text", "markup.underline", "string", "text"],
2861
+ regex : "(\\!?\\[)(" + // [
2862
+ escaped("]") + // link text or alt text
2863
+ ")(\\]\\()"+ // ](
2864
+ '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image
2865
+ '(\\s*"' + escaped('"') + '"\\s*)?' + // "title"
2866
+ "(\\))" // )
2867
+ }, { // strong ** __
2868
+ token : "string.strong",
2869
+ regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
2870
+ }, { // emphasis * _
2871
+ token : "string.emphasis",
2872
+ regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
2873
+ }, { //
2874
+ token : ["text", "url", "text"],
2875
+ regex : "(<)("+
2876
+ "(?:https?|ftp|dict):[^'\">\\s]+"+
2877
+ "|"+
2878
+ "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+
2879
+ ")(>)"
2880
+ }],
2881
+ "allowBlock": [
2882
+ {token : "support.function", regex : "^ {4}.+", next : "allowBlock"},
2883
+ {token : "empty_line", regex : '^$', next: "allowBlock"},
2884
+ {token : "empty", regex : "", next : "start"}
2885
+ ],
2886
+
2887
+ "header" : [{
2888
+ regex: "$",
2889
+ next : "start"
2890
+ }, {
2891
+ include: "basic"
2892
+ }, {
2893
+ defaultToken : "heading"
2894
+ } ],
2895
+
2896
+ "listblock-start" : [{
2897
+ token : "support.variable",
2898
+ regex : /(?:\[[ x]\])?/,
2899
+ next : "listblock"
2900
+ }],
2901
+
2902
+ "listblock" : [ { // Lists only escape on completely blank lines.
2903
+ token : "empty_line",
2904
+ regex : "^$",
2905
+ next : "start"
2906
+ }, { // list
2907
+ token : "markup.list",
2908
+ regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",
2909
+ next : "listblock-start"
2910
+ }, {
2911
+ include : "basic", noEscape: true
2912
+ },
2913
+ codeBlockStartRule,
2914
+ {
2915
+ defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly
2916
+ } ],
2917
+
2918
+ "blockquote" : [ { // Blockquotes only escape on blank lines.
2919
+ token : "empty_line",
2920
+ regex : "^\\s*$",
2921
+ next : "start"
2922
+ }, { // block quote
2923
+ token : "string.blockquote",
2924
+ regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",
2925
+ next : "blockquote"
2926
+ }, {
2927
+ include : "basic", noEscape: true
2928
+ }, {
2929
+ defaultToken : "string.blockquote"
2930
+ } ],
2931
+
2932
+ "githubblock" : codeBlockRules
2933
+ });
2934
+
2935
+ this.normalizeRules();
2936
+ };
2937
+ oop.inherits(MarkdownHighlightRules, TextHighlightRules);
2938
+
2939
+ exports.MarkdownHighlightRules = MarkdownHighlightRules;
2940
+ });
2941
+
2942
+ define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
2943
+ "use strict";
2944
+
2945
+ var oop = require("../../lib/oop");
2946
+ var BaseFoldMode = require("./fold_mode").FoldMode;
2947
+ var Range = require("../../range").Range;
2948
+
2949
+ var FoldMode = exports.FoldMode = function() {};
2950
+ oop.inherits(FoldMode, BaseFoldMode);
2951
+
2952
+ (function() {
2953
+ this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/;
2954
+
2955
+ this.getFoldWidget = function(session, foldStyle, row) {
2956
+ var line = session.getLine(row);
2957
+ if (!this.foldingStartMarker.test(line))
2958
+ return "";
2959
+
2960
+ if (line[0] == "`") {
2961
+ if (session.bgTokenizer.getState(row) == "start")
2962
+ return "end";
2963
+ return "start";
2964
+ }
2965
+
2966
+ return "start";
2967
+ };
2968
+
2969
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
2970
+ var line = session.getLine(row);
2971
+ var startColumn = line.length;
2972
+ var maxRow = session.getLength();
2973
+ var startRow = row;
2974
+ var endRow = row;
2975
+ if (!line.match(this.foldingStartMarker))
2976
+ return;
2977
+
2978
+ if (line[0] == "`") {
2979
+ if (session.bgTokenizer.getState(row) !== "start") {
2980
+ while (++row < maxRow) {
2981
+ line = session.getLine(row);
2982
+ if (line[0] == "`" & line.substring(0, 3) == "```")
2983
+ break;
2984
+ }
2985
+ return new Range(startRow, startColumn, row, 0);
2986
+ } else {
2987
+ while (row -- > 0) {
2988
+ line = session.getLine(row);
2989
+ if (line[0] == "`" & line.substring(0, 3) == "```")
2990
+ break;
2991
+ }
2992
+ return new Range(row, line.length, startRow, 0);
2993
+ }
2994
+ }
2995
+
2996
+ var token;
2997
+ function isHeading(row) {
2998
+ token = session.getTokens(row)[0];
2999
+ return token && token.type.lastIndexOf(heading, 0) === 0;
3000
+ }
3001
+
3002
+ var heading = "markup.heading";
3003
+ function getLevel() {
3004
+ var ch = token.value[0];
3005
+ if (ch == "=") return 6;
3006
+ if (ch == "-") return 5;
3007
+ return 7 - token.value.search(/[^#]/);
3008
+ }
3009
+
3010
+ if (isHeading(row)) {
3011
+ var startHeadingLevel = getLevel();
3012
+ while (++row < maxRow) {
3013
+ if (!isHeading(row))
3014
+ continue;
3015
+ var level = getLevel();
3016
+ if (level >= startHeadingLevel)
3017
+ break;
3018
+ }
3019
+
3020
+ endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2);
3021
+
3022
+ if (endRow > startRow) {
3023
+ while (endRow > startRow && /^\s*$/.test(session.getLine(endRow)))
3024
+ endRow--;
3025
+ }
3026
+
3027
+ if (endRow > startRow) {
3028
+ var endColumn = session.getLine(endRow).length;
3029
+ return new Range(startRow, startColumn, endRow, endColumn);
3030
+ }
3031
+ }
3032
+ };
3033
+
3034
+ }).call(FoldMode.prototype);
3035
+
3036
+ });
3037
+
3038
+ define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
3039
+ "use strict";
3040
+
3041
+ var oop = require("../lib/oop");
3042
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
3043
+
3044
+ var reservedKeywords = exports.reservedKeywords = (
3045
+ '!|{|}|case|do|done|elif|else|'+
3046
+ 'esac|fi|for|if|in|then|until|while|'+
3047
+ '&|;|export|local|read|typeset|unset|'+
3048
+ 'elif|select|set|function|declare|readonly'
3049
+ );
3050
+
3051
+ var languageConstructs = exports.languageConstructs = (
3052
+ '[|]|alias|bg|bind|break|builtin|'+
3053
+ 'cd|command|compgen|complete|continue|'+
3054
+ 'dirs|disown|echo|enable|eval|exec|'+
3055
+ 'exit|fc|fg|getopts|hash|help|history|'+
3056
+ 'jobs|kill|let|logout|popd|printf|pushd|'+
3057
+ 'pwd|return|set|shift|shopt|source|'+
3058
+ 'suspend|test|times|trap|type|ulimit|'+
3059
+ 'umask|unalias|wait'
3060
+ );
3061
+
3062
+ var ShHighlightRules = function() {
3063
+ var keywordMapper = this.createKeywordMapper({
3064
+ "keyword": reservedKeywords,
3065
+ "support.function.builtin": languageConstructs,
3066
+ "invalid.deprecated": "debugger"
3067
+ }, "identifier");
3068
+
3069
+ var integer = "(?:(?:[1-9]\\d*)|(?:0))";
3070
+ var fraction = "(?:\\.\\d+)";
3071
+ var intPart = "(?:\\d+)";
3072
+ var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
3073
+ var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")";
3074
+ var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
3075
+ var fileDescriptor = "(?:&" + intPart + ")";
3076
+
3077
+ var variableName = "[a-zA-Z_][a-zA-Z0-9_]*";
3078
+ var variable = "(?:" + variableName + "(?==))";
3079
+
3080
+ var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))";
3081
+
3082
+ var func = "(?:" + variableName + "\\s*\\(\\))";
3083
+
3084
+ this.$rules = {
3085
+ "start" : [{
3086
+ token : "constant",
3087
+ regex : /\\./
3088
+ }, {
3089
+ token : ["text", "comment"],
3090
+ regex : /(^|\s)(#.*)$/
3091
+ }, {
3092
+ token : "string.start",
3093
+ regex : '"',
3094
+ push : [{
3095
+ token : "constant.language.escape",
3096
+ regex : /\\(?:[$`"\\]|$)/
3097
+ }, {
3098
+ include : "variables"
3099
+ }, {
3100
+ token : "keyword.operator",
3101
+ regex : /`/ // TODO highlight `
3102
+ }, {
3103
+ token : "string.end",
3104
+ regex : '"',
3105
+ next: "pop"
3106
+ }, {
3107
+ defaultToken: "string"
3108
+ }]
3109
+ }, {
3110
+ token : "string",
3111
+ regex : "\\$'",
3112
+ push : [{
3113
+ token : "constant.language.escape",
3114
+ regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/
3115
+ }, {
3116
+ token : "string",
3117
+ regex : "'",
3118
+ next: "pop"
3119
+ }, {
3120
+ defaultToken: "string"
3121
+ }]
3122
+ }, {
3123
+ regex : "<<<",
3124
+ token : "keyword.operator"
3125
+ }, {
3126
+ stateName: "heredoc",
3127
+ regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",
3128
+ onMatch : function(value, currentState, stack) {
3129
+ var next = value[2] == '-' ? "indentedHeredoc" : "heredoc";
3130
+ var tokens = value.split(this.splitRegex);
3131
+ stack.push(next, tokens[4]);
3132
+ return [
3133
+ {type:"constant", value: tokens[1]},
3134
+ {type:"text", value: tokens[2]},
3135
+ {type:"string", value: tokens[3]},
3136
+ {type:"support.class", value: tokens[4]},
3137
+ {type:"string", value: tokens[5]}
3138
+ ];
3139
+ },
3140
+ rules: {
3141
+ heredoc: [{
3142
+ onMatch: function(value, currentState, stack) {
3143
+ if (value === stack[1]) {
3144
+ stack.shift();
3145
+ stack.shift();
3146
+ this.next = stack[0] || "start";
3147
+ return "support.class";
3148
+ }
3149
+ this.next = "";
3150
+ return "string";
3151
+ },
3152
+ regex: ".*$",
3153
+ next: "start"
3154
+ }],
3155
+ indentedHeredoc: [{
3156
+ token: "string",
3157
+ regex: "^\t+"
3158
+ }, {
3159
+ onMatch: function(value, currentState, stack) {
3160
+ if (value === stack[1]) {
3161
+ stack.shift();
3162
+ stack.shift();
3163
+ this.next = stack[0] || "start";
3164
+ return "support.class";
3165
+ }
3166
+ this.next = "";
3167
+ return "string";
3168
+ },
3169
+ regex: ".*$",
3170
+ next: "start"
3171
+ }]
3172
+ }
3173
+ }, {
3174
+ regex : "$",
3175
+ token : "empty",
3176
+ next : function(currentState, stack) {
3177
+ if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
3178
+ return stack[0];
3179
+ return currentState;
3180
+ }
3181
+ }, {
3182
+ token : ["keyword", "text", "text", "text", "variable"],
3183
+ regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/
3184
+ }, {
3185
+ token : "variable.language",
3186
+ regex : builtinVariable
3187
+ }, {
3188
+ token : "variable",
3189
+ regex : variable
3190
+ }, {
3191
+ include : "variables"
3192
+ }, {
3193
+ token : "support.function",
3194
+ regex : func
3195
+ }, {
3196
+ token : "support.function",
3197
+ regex : fileDescriptor
3198
+ }, {
3199
+ token : "string", // ' string
3200
+ start : "'", end : "'"
3201
+ }, {
3202
+ token : "constant.numeric", // float
3203
+ regex : floatNumber
3204
+ }, {
3205
+ token : "constant.numeric", // integer
3206
+ regex : integer + "\\b"
3207
+ }, {
3208
+ token : keywordMapper,
3209
+ regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b"
3210
+ }, {
3211
+ token : "keyword.operator",
3212
+ regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"
3213
+ }, {
3214
+ token : "punctuation.operator",
3215
+ regex : ";"
3216
+ }, {
3217
+ token : "paren.lparen",
3218
+ regex : "[\\[\\(\\{]"
3219
+ }, {
3220
+ token : "paren.rparen",
3221
+ regex : "[\\]]"
3222
+ }, {
3223
+ token : "paren.rparen",
3224
+ regex : "[\\)\\}]",
3225
+ next : "pop"
3226
+ }],
3227
+ variables: [{
3228
+ token : "variable",
3229
+ regex : /(\$)(\w+)/
3230
+ }, {
3231
+ token : ["variable", "paren.lparen"],
3232
+ regex : /(\$)(\()/,
3233
+ push : "start"
3234
+ }, {
3235
+ token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"],
3236
+ regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,
3237
+ push : "start"
3238
+ }, {
3239
+ token : "variable",
3240
+ regex : /\$[*@#?\-$!0_]/
3241
+ }, {
3242
+ token : ["variable", "paren.lparen"],
3243
+ regex : /(\$)(\{)/,
3244
+ push : "start"
3245
+ }]
3246
+ };
3247
+
3248
+ this.normalizeRules();
3249
+ };
3250
+
3251
+ oop.inherits(ShHighlightRules, TextHighlightRules);
3252
+
3253
+ exports.ShHighlightRules = ShHighlightRules;
3254
+ });
3255
+
3256
+ define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) {
3257
+ "use strict";
3258
+
3259
+ var oop = require("../lib/oop");
3260
+ var TextMode = require("./text").Mode;
3261
+ var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules;
3262
+ var Range = require("../range").Range;
3263
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
3264
+ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
3265
+
3266
+ var Mode = function() {
3267
+ this.HighlightRules = ShHighlightRules;
3268
+ this.foldingRules = new CStyleFoldMode();
3269
+ this.$behaviour = new CstyleBehaviour();
3270
+ };
3271
+ oop.inherits(Mode, TextMode);
3272
+
3273
+ (function() {
3274
+
3275
+
3276
+ this.lineCommentStart = "#";
3277
+
3278
+ this.getNextLineIndent = function(state, line, tab) {
3279
+ var indent = this.$getIndent(line);
3280
+
3281
+ var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
3282
+ var tokens = tokenizedLine.tokens;
3283
+
3284
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
3285
+ return indent;
3286
+ }
3287
+
3288
+ if (state == "start") {
3289
+ var match = line.match(/^.*[\{\(\[:]\s*$/);
3290
+ if (match) {
3291
+ indent += tab;
3292
+ }
3293
+ }
3294
+
3295
+ return indent;
3296
+ };
3297
+
3298
+ var outdents = {
3299
+ "pass": 1,
3300
+ "return": 1,
3301
+ "raise": 1,
3302
+ "break": 1,
3303
+ "continue": 1
3304
+ };
3305
+
3306
+ this.checkOutdent = function(state, line, input) {
3307
+ if (input !== "\r\n" && input !== "\r" && input !== "\n")
3308
+ return false;
3309
+
3310
+ var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;
3311
+
3312
+ if (!tokens)
3313
+ return false;
3314
+ do {
3315
+ var last = tokens.pop();
3316
+ } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
3317
+
3318
+ if (!last)
3319
+ return false;
3320
+
3321
+ return (last.type == "keyword" && outdents[last.value]);
3322
+ };
3323
+
3324
+ this.autoOutdent = function(state, doc, row) {
3325
+ row += 1;
3326
+ var indent = this.$getIndent(doc.getLine(row));
3327
+ var tab = doc.getTabString();
3328
+ if (indent.slice(-tab.length) == tab)
3329
+ doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
3330
+ };
3331
+
3332
+ this.$id = "ace/mode/sh";
3333
+ }).call(Mode.prototype);
3334
+
3335
+ exports.Mode = Mode;
3336
+ });
3337
+
3338
+ define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module) {
3339
+ "use strict";
3340
+
3341
+ var oop = require("../lib/oop");
3342
+ var TextMode = require("./text").Mode;
3343
+ var JavaScriptMode = require("./javascript").Mode;
3344
+ var XmlMode = require("./xml").Mode;
3345
+ var HtmlMode = require("./html").Mode;
3346
+ var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules;
3347
+ var MarkdownFoldMode = require("./folding/markdown").FoldMode;
3348
+
3349
+ var Mode = function() {
3350
+ this.HighlightRules = MarkdownHighlightRules;
3351
+
3352
+ this.createModeDelegates({
3353
+ javascript: require("./javascript").Mode,
3354
+ html: require("./html").Mode,
3355
+ bash: require("./sh").Mode,
3356
+ sh: require("./sh").Mode,
3357
+ xml: require("./xml").Mode,
3358
+ css: require("./css").Mode
3359
+ });
3360
+
3361
+ this.foldingRules = new MarkdownFoldMode();
3362
+ this.$behaviour = this.$defaultBehaviour;
3363
+ };
3364
+ oop.inherits(Mode, TextMode);
3365
+
3366
+ (function() {
3367
+ this.type = "text";
3368
+ this.blockComment = {start: "<!--", end: "-->"};
3369
+
3370
+ this.getNextLineIndent = function(state, line, tab) {
3371
+ if (state == "listblock") {
3372
+ var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line);
3373
+ if (!match)
3374
+ return "";
3375
+ var marker = match[2];
3376
+ if (!marker)
3377
+ marker = parseInt(match[3], 10) + 1 + ".";
3378
+ return match[1] + marker + match[4];
3379
+ } else {
3380
+ return this.$getIndent(line);
3381
+ }
3382
+ };
3383
+ this.$id = "ace/mode/markdown";
3384
+ }).call(Mode.prototype);
3385
+
3386
+ exports.Mode = Mode;
3387
+ });
3388
+
3389
+ define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
3390
+ "use strict";
3391
+
3392
+ var oop = require("../lib/oop");
3393
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
3394
+
3395
+ oop.inherits(CoffeeHighlightRules, TextHighlightRules);
3396
+
3397
+ function CoffeeHighlightRules() {
3398
+ var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*";
3399
+
3400
+ var keywords = (
3401
+ "this|throw|then|try|typeof|super|switch|return|break|by|continue|" +
3402
+ "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" +
3403
+ "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" +
3404
+ "or|on|unless|until|and|yes|yield|export|import|default"
3405
+ );
3406
+
3407
+ var langConstant = (
3408
+ "true|false|null|undefined|NaN|Infinity"
3409
+ );
3410
+
3411
+ var illegal = (
3412
+ "case|const|function|var|void|with|enum|implements|" +
3413
+ "interface|let|package|private|protected|public|static"
3414
+ );
3415
+
3416
+ var supportClass = (
3417
+ "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" +
3418
+ "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" +
3419
+ "SyntaxError|TypeError|URIError|" +
3420
+ "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" +
3421
+ "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray"
3422
+ );
3423
+
3424
+ var supportFunction = (
3425
+ "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" +
3426
+ "encodeURIComponent|decodeURI|decodeURIComponent|String|"
3427
+ );
3428
+
3429
+ var variableLanguage = (
3430
+ "window|arguments|prototype|document"
3431
+ );
3432
+
3433
+ var keywordMapper = this.createKeywordMapper({
3434
+ "keyword": keywords,
3435
+ "constant.language": langConstant,
3436
+ "invalid.illegal": illegal,
3437
+ "language.support.class": supportClass,
3438
+ "language.support.function": supportFunction,
3439
+ "variable.language": variableLanguage
3440
+ }, "identifier");
3441
+
3442
+ var functionRule = {
3443
+ token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"],
3444
+ regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source
3445
+ };
3446
+
3447
+ var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;
3448
+
3449
+ this.$rules = {
3450
+ start : [
3451
+ {
3452
+ token : "constant.numeric",
3453
+ regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"
3454
+ }, {
3455
+ stateName: "qdoc",
3456
+ token : "string", regex : "'''", next : [
3457
+ {token : "string", regex : "'''", next : "start"},
3458
+ {token : "constant.language.escape", regex : stringEscape},
3459
+ {defaultToken: "string"}
3460
+ ]
3461
+ }, {
3462
+ stateName: "qqdoc",
3463
+ token : "string",
3464
+ regex : '"""',
3465
+ next : [
3466
+ {token : "string", regex : '"""', next : "start"},
3467
+ {token : "paren.string", regex : '#{', push : "start"},
3468
+ {token : "constant.language.escape", regex : stringEscape},
3469
+ {defaultToken: "string"}
3470
+ ]
3471
+ }, {
3472
+ stateName: "qstring",
3473
+ token : "string", regex : "'", next : [
3474
+ {token : "string", regex : "'", next : "start"},
3475
+ {token : "constant.language.escape", regex : stringEscape},
3476
+ {defaultToken: "string"}
3477
+ ]
3478
+ }, {
3479
+ stateName: "qqstring",
3480
+ token : "string.start", regex : '"', next : [
3481
+ {token : "string.end", regex : '"', next : "start"},
3482
+ {token : "paren.string", regex : '#{', push : "start"},
3483
+ {token : "constant.language.escape", regex : stringEscape},
3484
+ {defaultToken: "string"}
3485
+ ]
3486
+ }, {
3487
+ stateName: "js",
3488
+ token : "string", regex : "`", next : [
3489
+ {token : "string", regex : "`", next : "start"},
3490
+ {token : "constant.language.escape", regex : stringEscape},
3491
+ {defaultToken: "string"}
3492
+ ]
3493
+ }, {
3494
+ regex: "[{}]", onMatch: function(val, state, stack) {
3495
+ this.next = "";
3496
+ if (val == "{" && stack.length) {
3497
+ stack.unshift("start", state);
3498
+ return "paren";
3499
+ }
3500
+ if (val == "}" && stack.length) {
3501
+ stack.shift();
3502
+ this.next = stack.shift() || "";
3503
+ if (this.next.indexOf("string") != -1)
3504
+ return "paren.string";
3505
+ }
3506
+ return "paren";
3507
+ }
3508
+ }, {
3509
+ token : "string.regex",
3510
+ regex : "///",
3511
+ next : "heregex"
3512
+ }, {
3513
+ token : "string.regex",
3514
+ regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/
3515
+ }, {
3516
+ token : "comment",
3517
+ regex : "###(?!#)",
3518
+ next : "comment"
3519
+ }, {
3520
+ token : "comment",
3521
+ regex : "#.*"
3522
+ }, {
3523
+ token : ["punctuation.operator", "text", "identifier"],
3524
+ regex : "(\\.)(\\s*)(" + illegal + ")"
3525
+ }, {
3526
+ token : "punctuation.operator",
3527
+ regex : "\\.{1,3}"
3528
+ }, {
3529
+ token : ["keyword", "text", "language.support.class",
3530
+ "text", "keyword", "text", "language.support.class"],
3531
+ regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?"
3532
+ }, {
3533
+ token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token),
3534
+ regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex
3535
+ },
3536
+ functionRule,
3537
+ {
3538
+ token : "variable",
3539
+ regex : "@(?:" + identifier + ")?"
3540
+ }, {
3541
+ token: keywordMapper,
3542
+ regex : identifier
3543
+ }, {
3544
+ token : "punctuation.operator",
3545
+ regex : "\\,|\\."
3546
+ }, {
3547
+ token : "storage.type",
3548
+ regex : "[\\-=]>"
3549
+ }, {
3550
+ token : "keyword.operator",
3551
+ regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"
3552
+ }, {
3553
+ token : "paren.lparen",
3554
+ regex : "[({[]"
3555
+ }, {
3556
+ token : "paren.rparen",
3557
+ regex : "[\\]})]"
3558
+ }, {
3559
+ token : "text",
3560
+ regex : "\\s+"
3561
+ }],
3562
+
3563
+
3564
+ heregex : [{
3565
+ token : "string.regex",
3566
+ regex : '.*?///[imgy]{0,4}',
3567
+ next : "start"
3568
+ }, {
3569
+ token : "comment.regex",
3570
+ regex : "\\s+(?:#.*)?"
3571
+ }, {
3572
+ token : "string.regex",
3573
+ regex : "\\S+"
3574
+ }],
3575
+
3576
+ comment : [{
3577
+ token : "comment",
3578
+ regex : '###',
3579
+ next : "start"
3580
+ }, {
3581
+ defaultToken : "comment"
3582
+ }]
3583
+ };
3584
+ this.normalizeRules();
3585
+ }
3586
+
3587
+ exports.CoffeeHighlightRules = CoffeeHighlightRules;
3588
+ });
3589
+
3590
+ define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
3591
+ "use strict";
3592
+
3593
+ var oop = require("../../lib/oop");
3594
+ var BaseFoldMode = require("./fold_mode").FoldMode;
3595
+ var Range = require("../../range").Range;
3596
+
3597
+ var FoldMode = exports.FoldMode = function() {};
3598
+ oop.inherits(FoldMode, BaseFoldMode);
3599
+
3600
+ (function() {
3601
+
3602
+ this.getFoldWidgetRange = function(session, foldStyle, row) {
3603
+ var range = this.indentationBlock(session, row);
3604
+ if (range)
3605
+ return range;
3606
+
3607
+ var re = /\S/;
3608
+ var line = session.getLine(row);
3609
+ var startLevel = line.search(re);
3610
+ if (startLevel == -1 || line[startLevel] != "#")
3611
+ return;
3612
+
3613
+ var startColumn = line.length;
3614
+ var maxRow = session.getLength();
3615
+ var startRow = row;
3616
+ var endRow = row;
3617
+
3618
+ while (++row < maxRow) {
3619
+ line = session.getLine(row);
3620
+ var level = line.search(re);
3621
+
3622
+ if (level == -1)
3623
+ continue;
3624
+
3625
+ if (line[level] != "#")
3626
+ break;
3627
+
3628
+ endRow = row;
3629
+ }
3630
+
3631
+ if (endRow > startRow) {
3632
+ var endColumn = session.getLine(endRow).length;
3633
+ return new Range(startRow, startColumn, endRow, endColumn);
3634
+ }
3635
+ };
3636
+ this.getFoldWidget = function(session, foldStyle, row) {
3637
+ var line = session.getLine(row);
3638
+ var indent = line.search(/\S/);
3639
+ var next = session.getLine(row + 1);
3640
+ var prev = session.getLine(row - 1);
3641
+ var prevIndent = prev.search(/\S/);
3642
+ var nextIndent = next.search(/\S/);
3643
+
3644
+ if (indent == -1) {
3645
+ session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
3646
+ return "";
3647
+ }
3648
+ if (prevIndent == -1) {
3649
+ if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
3650
+ session.foldWidgets[row - 1] = "";
3651
+ session.foldWidgets[row + 1] = "";
3652
+ return "start";
3653
+ }
3654
+ } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
3655
+ if (session.getLine(row - 2).search(/\S/) == -1) {
3656
+ session.foldWidgets[row - 1] = "start";
3657
+ session.foldWidgets[row + 1] = "";
3658
+ return "";
3659
+ }
3660
+ }
3661
+
3662
+ if (prevIndent!= -1 && prevIndent < indent)
3663
+ session.foldWidgets[row - 1] = "start";
3664
+ else
3665
+ session.foldWidgets[row - 1] = "";
3666
+
3667
+ if (indent < nextIndent)
3668
+ return "start";
3669
+ else
3670
+ return "";
3671
+ };
3672
+
3673
+ }).call(FoldMode.prototype);
3674
+
3675
+ });
3676
+
3677
+ define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module) {
3678
+ "use strict";
3679
+
3680
+ var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules;
3681
+ var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent;
3682
+ var FoldMode = require("./folding/coffee").FoldMode;
3683
+ var Range = require("../range").Range;
3684
+ var TextMode = require("./text").Mode;
3685
+ var WorkerClient = require("../worker/worker_client").WorkerClient;
3686
+ var oop = require("../lib/oop");
3687
+
3688
+ function Mode() {
3689
+ this.HighlightRules = Rules;
3690
+ this.$outdent = new Outdent();
3691
+ this.foldingRules = new FoldMode();
3692
+ }
3693
+
3694
+ oop.inherits(Mode, TextMode);
3695
+
3696
+ (function() {
3697
+ var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;
3698
+
3699
+ this.lineCommentStart = "#";
3700
+ this.blockComment = {start: "###", end: "###"};
3701
+
3702
+ this.getNextLineIndent = function(state, line, tab) {
3703
+ var indent = this.$getIndent(line);
3704
+ var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
3705
+
3706
+ if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') &&
3707
+ state === 'start' && indenter.test(line))
3708
+ indent += tab;
3709
+ return indent;
3710
+ };
3711
+
3712
+ this.checkOutdent = function(state, line, input) {
3713
+ return this.$outdent.checkOutdent(line, input);
3714
+ };
3715
+
3716
+ this.autoOutdent = function(state, doc, row) {
3717
+ this.$outdent.autoOutdent(doc, row);
3718
+ };
3719
+
3720
+ this.createWorker = function(session) {
3721
+ var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker");
3722
+ worker.attachToDocument(session.getDocument());
3723
+
3724
+ worker.on("annotate", function(e) {
3725
+ session.setAnnotations(e.data);
3726
+ });
3727
+
3728
+ worker.on("terminate", function() {
3729
+ session.clearAnnotations();
3730
+ });
3731
+
3732
+ return worker;
3733
+ };
3734
+
3735
+ this.$id = "ace/mode/coffee";
3736
+ }).call(Mode.prototype);
3737
+
3738
+ exports.Mode = Mode;
3739
+
3740
+ });
3741
+
3742
+ define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) {
3743
+ "use strict";
3744
+
3745
+ var oop = require("../lib/oop");
3746
+ var lang = require("../lib/lang");
3747
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
3748
+
3749
+ var ScssHighlightRules = function() {
3750
+
3751
+ var properties = lang.arrayToMap( (function () {
3752
+
3753
+ var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|");
3754
+
3755
+ var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" +
3756
+ "background-size|binding|border-bottom-colors|border-left-colors|" +
3757
+ "border-right-colors|border-top-colors|border-end|border-end-color|" +
3758
+ "border-end-style|border-end-width|border-image|border-start|" +
3759
+ "border-start-color|border-start-style|border-start-width|box-align|" +
3760
+ "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" +
3761
+ "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" +
3762
+ "column-rule-width|column-rule-style|column-rule-color|float-edge|" +
3763
+ "font-feature-settings|font-language-override|force-broken-image-icon|" +
3764
+ "image-region|margin-end|margin-start|opacity|outline|outline-color|" +
3765
+ "outline-offset|outline-radius|outline-radius-bottomleft|" +
3766
+ "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" +
3767
+ "outline-style|outline-width|padding-end|padding-start|stack-sizing|" +
3768
+ "tab-size|text-blink|text-decoration-color|text-decoration-line|" +
3769
+ "text-decoration-style|transform|transform-origin|transition|" +
3770
+ "transition-delay|transition-duration|transition-property|" +
3771
+ "transition-timing-function|user-focus|user-input|user-modify|user-select|" +
3772
+ "window-shadow|border-radius").split("|");
3773
+
3774
+ var properties = ("azimuth|background-attachment|background-color|background-image|" +
3775
+ "background-position|background-repeat|background|border-bottom-color|" +
3776
+ "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" +
3777
+ "border-color|border-left-color|border-left-style|border-left-width|" +
3778
+ "border-left|border-right-color|border-right-style|border-right-width|" +
3779
+ "border-right|border-spacing|border-style|border-top-color|" +
3780
+ "border-top-style|border-top-width|border-top|border-width|border|bottom|" +
3781
+ "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
3782
+ "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
3783
+ "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
3784
+ "font-stretch|font-style|font-variant|font-weight|font|height|left|" +
3785
+ "letter-spacing|line-height|list-style-image|list-style-position|" +
3786
+ "list-style-type|list-style|margin-bottom|margin-left|margin-right|" +
3787
+ "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" +
3788
+ "min-width|opacity|orphans|outline-color|" +
3789
+ "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" +
3790
+ "padding-left|padding-right|padding-top|padding|page-break-after|" +
3791
+ "page-break-before|page-break-inside|page|pause-after|pause-before|" +
3792
+ "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" +
3793
+ "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" +
3794
+ "stress|table-layout|text-align|text-decoration|text-indent|" +
3795
+ "text-shadow|text-transform|top|unicode-bidi|vertical-align|" +
3796
+ "visibility|voice-family|volume|white-space|widows|width|word-spacing|" +
3797
+ "z-index").split("|");
3798
+ var ret = [];
3799
+ for (var i=0, ln=browserPrefix.length; i<ln; i++) {
3800
+ Array.prototype.push.apply(
3801
+ ret,
3802
+ (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|"))
3803
+ );
3804
+ }
3805
+ Array.prototype.push.apply(ret, prefixProperties);
3806
+ Array.prototype.push.apply(ret, properties);
3807
+
3808
+ return ret;
3809
+
3810
+ })() );
3811
+
3812
+
3813
+
3814
+ var functions = lang.arrayToMap(
3815
+ ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" +
3816
+ "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" +
3817
+ "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" +
3818
+ "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" +
3819
+ "scale_color|transparentize|type_of|unit|unitless|unquote").split("|")
3820
+ );
3821
+
3822
+ var constants = lang.arrayToMap(
3823
+ ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" +
3824
+ "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" +
3825
+ "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" +
3826
+ "decimal-leading-zero|decimal|default|disabled|disc|" +
3827
+ "distribute-all-lines|distribute-letter|distribute-space|" +
3828
+ "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" +
3829
+ "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" +
3830
+ "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" +
3831
+ "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" +
3832
+ "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" +
3833
+ "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
3834
+ "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" +
3835
+ "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" +
3836
+ "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" +
3837
+ "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" +
3838
+ "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" +
3839
+ "solid|square|static|strict|super|sw-resize|table-footer-group|" +
3840
+ "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" +
3841
+ "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" +
3842
+ "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" +
3843
+ "zero").split("|")
3844
+ );
3845
+
3846
+ var colors = lang.arrayToMap(
3847
+ ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" +
3848
+ "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" +
3849
+ "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" +
3850
+ "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" +
3851
+ "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" +
3852
+ "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" +
3853
+ "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" +
3854
+ "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" +
3855
+ "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" +
3856
+ "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" +
3857
+ "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" +
3858
+ "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" +
3859
+ "lightsalmon|lightseagreen|lightskyblue|lightslategray|" +
3860
+ "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" +
3861
+ "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" +
3862
+ "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" +
3863
+ "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" +
3864
+ "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" +
3865
+ "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" +
3866
+ "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" +
3867
+ "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" +
3868
+ "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" +
3869
+ "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" +
3870
+ "wheat|white|whitesmoke|yellow|yellowgreen").split("|")
3871
+ );
3872
+
3873
+ var keywords = lang.arrayToMap(
3874
+ ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|")
3875
+ );
3876
+
3877
+ var tags = lang.arrayToMap(
3878
+ ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" +
3879
+ "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" +
3880
+ "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" +
3881
+ "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" +
3882
+ "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" +
3883
+ "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" +
3884
+ "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" +
3885
+ "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" +
3886
+ "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")
3887
+ );
3888
+ var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
3889
+ this.$rules = {
3890
+ "start" : [
3891
+ {
3892
+ token : "comment",
3893
+ regex : "\\/\\/.*$"
3894
+ },
3895
+ {
3896
+ token : "comment", // multi line comment
3897
+ regex : "\\/\\*",
3898
+ next : "comment"
3899
+ }, {
3900
+ token : "string", // single line
3901
+ regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
3902
+ }, {
3903
+ token : "string", // multi line string start
3904
+ regex : '["].*\\\\$',
3905
+ next : "qqstring"
3906
+ }, {
3907
+ token : "string", // single line
3908
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
3909
+ }, {
3910
+ token : "string", // multi line string start
3911
+ regex : "['].*\\\\$",
3912
+ next : "qstring"
3913
+ }, {
3914
+ token : "constant.numeric",
3915
+ regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"
3916
+ }, {
3917
+ token : "constant.numeric", // hex6 color
3918
+ regex : "#[a-f0-9]{6}"
3919
+ }, {
3920
+ token : "constant.numeric", // hex3 color
3921
+ regex : "#[a-f0-9]{3}"
3922
+ }, {
3923
+ token : "constant.numeric",
3924
+ regex : numRe
3925
+ }, {
3926
+ token : ["support.function", "string", "support.function"],
3927
+ regex : "(url\\()(.*)(\\))"
3928
+ }, {
3929
+ token : function(value) {
3930
+ if (properties.hasOwnProperty(value.toLowerCase()))
3931
+ return "support.type";
3932
+ if (keywords.hasOwnProperty(value))
3933
+ return "keyword";
3934
+ else if (constants.hasOwnProperty(value))
3935
+ return "constant.language";
3936
+ else if (functions.hasOwnProperty(value))
3937
+ return "support.function";
3938
+ else if (colors.hasOwnProperty(value.toLowerCase()))
3939
+ return "support.constant.color";
3940
+ else if (tags.hasOwnProperty(value.toLowerCase()))
3941
+ return "variable.language";
3942
+ else
3943
+ return "text";
3944
+ },
3945
+ regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
3946
+ }, {
3947
+ token : "variable",
3948
+ regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b"
3949
+ }, {
3950
+ token: "variable.language",
3951
+ regex: "#[a-z0-9-_]+"
3952
+ }, {
3953
+ token: "variable.language",
3954
+ regex: "\\.[a-z0-9-_]+"
3955
+ }, {
3956
+ token: "variable.language",
3957
+ regex: ":[a-z0-9-_]+"
3958
+ }, {
3959
+ token: "constant",
3960
+ regex: "[a-z0-9-_]+"
3961
+ }, {
3962
+ token : "keyword.operator",
3963
+ regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"
3964
+ }, {
3965
+ token : "paren.lparen",
3966
+ regex : "[[({]"
3967
+ }, {
3968
+ token : "paren.rparen",
3969
+ regex : "[\\])}]"
3970
+ }, {
3971
+ token : "text",
3972
+ regex : "\\s+"
3973
+ }, {
3974
+ caseInsensitive: true
3975
+ }
3976
+ ],
3977
+ "comment" : [
3978
+ {
3979
+ token : "comment", // closing comment
3980
+ regex : "\\*\\/",
3981
+ next : "start"
3982
+ }, {
3983
+ defaultToken : "comment"
3984
+ }
3985
+ ],
3986
+ "qqstring" : [
3987
+ {
3988
+ token : "string",
3989
+ regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
3990
+ next : "start"
3991
+ }, {
3992
+ token : "string",
3993
+ regex : '.+'
3994
+ }
3995
+ ],
3996
+ "qstring" : [
3997
+ {
3998
+ token : "string",
3999
+ regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
4000
+ next : "start"
4001
+ }, {
4002
+ token : "string",
4003
+ regex : '.+'
4004
+ }
4005
+ ]
4006
+ };
4007
+ };
4008
+
4009
+ oop.inherits(ScssHighlightRules, TextHighlightRules);
4010
+
4011
+ exports.ScssHighlightRules = ScssHighlightRules;
4012
+
4013
+ });
4014
+
4015
+ define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) {
4016
+ "use strict";
4017
+
4018
+ var oop = require("../lib/oop");
4019
+ var TextMode = require("./text").Mode;
4020
+ var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules;
4021
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
4022
+ var CssBehaviour = require("./behaviour/css").CssBehaviour;
4023
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
4024
+
4025
+ var Mode = function() {
4026
+ this.HighlightRules = ScssHighlightRules;
4027
+ this.$outdent = new MatchingBraceOutdent();
4028
+ this.$behaviour = new CssBehaviour();
4029
+ this.foldingRules = new CStyleFoldMode();
4030
+ };
4031
+ oop.inherits(Mode, TextMode);
4032
+
4033
+ (function() {
4034
+
4035
+ this.lineCommentStart = "//";
4036
+ this.blockComment = {start: "/*", end: "*/"};
4037
+
4038
+ this.getNextLineIndent = function(state, line, tab) {
4039
+ var indent = this.$getIndent(line);
4040
+ var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
4041
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
4042
+ return indent;
4043
+ }
4044
+
4045
+ var match = line.match(/^.*\{\s*$/);
4046
+ if (match) {
4047
+ indent += tab;
4048
+ }
4049
+
4050
+ return indent;
4051
+ };
4052
+
4053
+ this.checkOutdent = function(state, line, input) {
4054
+ return this.$outdent.checkOutdent(line, input);
4055
+ };
4056
+
4057
+ this.autoOutdent = function(state, doc, row) {
4058
+ this.$outdent.autoOutdent(doc, row);
4059
+ };
4060
+
4061
+ this.$id = "ace/mode/scss";
4062
+ }).call(Mode.prototype);
4063
+
4064
+ exports.Mode = Mode;
4065
+
4066
+ });
4067
+
4068
+ define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module) {
4069
+ "use strict";
4070
+
4071
+ var oop = require("../lib/oop");
4072
+ var lang = require("../lib/lang");
4073
+ var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules;
4074
+
4075
+ var SassHighlightRules = function() {
4076
+ ScssHighlightRules.call(this);
4077
+ var start = this.$rules.start;
4078
+ if (start[1].token == "comment") {
4079
+ start.splice(1, 1, {
4080
+ onMatch: function(value, currentState, stack) {
4081
+ stack.unshift(this.next, -1, value.length - 2, currentState);
4082
+ return "comment";
4083
+ },
4084
+ regex: /^\s*\/\*/,
4085
+ next: "comment"
4086
+ }, {
4087
+ token: "error.invalid",
4088
+ regex: "/\\*|[{;}]"
4089
+ }, {
4090
+ token: "support.type",
4091
+ regex: /^\s*:[\w\-]+\s/
4092
+ });
4093
+
4094
+ this.$rules.comment = [
4095
+ {regex: /^\s*/, onMatch: function(value, currentState, stack) {
4096
+ if (stack[1] === -1)
4097
+ stack[1] = Math.max(stack[2], value.length - 1);
4098
+ if (value.length <= stack[1]) {
4099
+ stack.shift();stack.shift();stack.shift();
4100
+ this.next = stack.shift();
4101
+ return "text";
4102
+ } else {
4103
+ this.next = "";
4104
+ return "comment";
4105
+ }
4106
+ }, next: "start"},
4107
+ {defaultToken: "comment"}
4108
+ ];
4109
+ }
4110
+ };
4111
+
4112
+ oop.inherits(SassHighlightRules, ScssHighlightRules);
4113
+
4114
+ exports.SassHighlightRules = SassHighlightRules;
4115
+
4116
+ });
4117
+
4118
+ define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) {
4119
+ "use strict";
4120
+
4121
+ var oop = require("../lib/oop");
4122
+ var TextMode = require("./text").Mode;
4123
+ var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules;
4124
+ var FoldMode = require("./folding/coffee").FoldMode;
4125
+
4126
+ var Mode = function() {
4127
+ this.HighlightRules = SassHighlightRules;
4128
+ this.foldingRules = new FoldMode();
4129
+ this.$behaviour = this.$defaultBehaviour;
4130
+ };
4131
+ oop.inherits(Mode, TextMode);
4132
+
4133
+ (function() {
4134
+ this.lineCommentStart = "//";
4135
+ this.$id = "ace/mode/sass";
4136
+ }).call(Mode.prototype);
4137
+
4138
+ exports.Mode = Mode;
4139
+
4140
+ });
4141
+
4142
+ define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) {
4143
+ "use strict";
4144
+
4145
+ var oop = require("../lib/oop");
4146
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
4147
+ var CssHighlightRules = require('./css_highlight_rules');
4148
+
4149
+ var LessHighlightRules = function() {
4150
+
4151
+
4152
+ var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" +
4153
+ "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" +
4154
+ "or|and|when|not";
4155
+
4156
+ var keywords = keywordList.split('|');
4157
+
4158
+ var properties = CssHighlightRules.supportType.split('|');
4159
+
4160
+ var keywordMapper = this.createKeywordMapper({
4161
+ "support.constant": CssHighlightRules.supportConstant,
4162
+ "keyword": keywordList,
4163
+ "support.constant.color": CssHighlightRules.supportConstantColor,
4164
+ "support.constant.fonts": CssHighlightRules.supportConstantFonts
4165
+ }, "identifier", true);
4166
+ var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";
4167
+ this.$rules = {
4168
+ "start" : [
4169
+ {
4170
+ token : "comment",
4171
+ regex : "\\/\\/.*$"
4172
+ },
4173
+ {
4174
+ token : "comment", // multi line comment
4175
+ regex : "\\/\\*",
4176
+ next : "comment"
4177
+ }, {
4178
+ token : "string", // single line
4179
+ regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
4180
+ }, {
4181
+ token : "string", // single line
4182
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
4183
+ }, {
4184
+ token : ["constant.numeric", "keyword"],
4185
+ regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
4186
+ }, {
4187
+ token : "constant.numeric", // hex6 color
4188
+ regex : "#[a-f0-9]{6}"
4189
+ }, {
4190
+ token : "constant.numeric", // hex3 color
4191
+ regex : "#[a-f0-9]{3}"
4192
+ }, {
4193
+ token : "constant.numeric",
4194
+ regex : numRe
4195
+ }, {
4196
+ token : ["support.function", "paren.lparen", "string", "paren.rparen"],
4197
+ regex : "(url)(\\()(.*)(\\))"
4198
+ }, {
4199
+ token : ["support.function", "paren.lparen"],
4200
+ regex : "(:extend|[a-z0-9_\\-]+)(\\()"
4201
+ }, {
4202
+ token : function(value) {
4203
+ if (keywords.indexOf(value.toLowerCase()) > -1)
4204
+ return "keyword";
4205
+ else
4206
+ return "variable";
4207
+ },
4208
+ regex : "[@\\$][a-z0-9_\\-@\\$]*\\b"
4209
+ }, {
4210
+ token : "variable",
4211
+ regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"
4212
+ }, {
4213
+ token : function(first, second) {
4214
+ if(properties.indexOf(first.toLowerCase()) > -1) {
4215
+ return ["support.type.property", "text"];
4216
+ }
4217
+ else {
4218
+ return ["support.type.unknownProperty", "text"];
4219
+ }
4220
+ },
4221
+ regex : "([a-z0-9-_]+)(\\s*:)"
4222
+ }, {
4223
+ token : "keyword",
4224
+ regex : "&" // special case - always treat as keyword
4225
+ }, {
4226
+ token : keywordMapper,
4227
+ regex : "\\-?[@a-z_][@a-z0-9_\\-]*"
4228
+ }, {
4229
+ token: "variable.language",
4230
+ regex: "#[a-z0-9-_]+"
4231
+ }, {
4232
+ token: "variable.language",
4233
+ regex: "\\.[a-z0-9-_]+"
4234
+ }, {
4235
+ token: "variable.language",
4236
+ regex: ":[a-z_][a-z0-9-_]*"
4237
+ }, {
4238
+ token: "constant",
4239
+ regex: "[a-z0-9-_]+"
4240
+ }, {
4241
+ token : "keyword.operator",
4242
+ regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*"
4243
+ }, {
4244
+ token : "paren.lparen",
4245
+ regex : "[[({]"
4246
+ }, {
4247
+ token : "paren.rparen",
4248
+ regex : "[\\])}]"
4249
+ }, {
4250
+ token : "text",
4251
+ regex : "\\s+"
4252
+ }, {
4253
+ caseInsensitive: true
4254
+ }
4255
+ ],
4256
+ "comment" : [
4257
+ {
4258
+ token : "comment", // closing comment
4259
+ regex : "\\*\\/",
4260
+ next : "start"
4261
+ }, {
4262
+ defaultToken : "comment"
4263
+ }
4264
+ ]
4265
+ };
4266
+ this.normalizeRules();
4267
+ };
4268
+
4269
+ oop.inherits(LessHighlightRules, TextHighlightRules);
4270
+
4271
+ exports.LessHighlightRules = LessHighlightRules;
4272
+
4273
+ });
4274
+
4275
+ define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module) {
4276
+ "use strict";
4277
+
4278
+ var oop = require("../lib/oop");
4279
+ var TextMode = require("./text").Mode;
4280
+ var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules;
4281
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
4282
+ var CssBehaviour = require("./behaviour/css").CssBehaviour;
4283
+ var CssCompletions = require("./css_completions").CssCompletions;
4284
+
4285
+ var CStyleFoldMode = require("./folding/cstyle").FoldMode;
4286
+
4287
+ var Mode = function() {
4288
+ this.HighlightRules = LessHighlightRules;
4289
+ this.$outdent = new MatchingBraceOutdent();
4290
+ this.$behaviour = new CssBehaviour();
4291
+ this.$completer = new CssCompletions();
4292
+ this.foldingRules = new CStyleFoldMode();
4293
+ };
4294
+ oop.inherits(Mode, TextMode);
4295
+
4296
+ (function() {
4297
+
4298
+ this.lineCommentStart = "//";
4299
+ this.blockComment = {start: "/*", end: "*/"};
4300
+
4301
+ this.getNextLineIndent = function(state, line, tab) {
4302
+ var indent = this.$getIndent(line);
4303
+ var tokens = this.getTokenizer().getLineTokens(line, state).tokens;
4304
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
4305
+ return indent;
4306
+ }
4307
+
4308
+ var match = line.match(/^.*\{\s*$/);
4309
+ if (match) {
4310
+ indent += tab;
4311
+ }
4312
+
4313
+ return indent;
4314
+ };
4315
+
4316
+ this.checkOutdent = function(state, line, input) {
4317
+ return this.$outdent.checkOutdent(line, input);
4318
+ };
4319
+
4320
+ this.autoOutdent = function(state, doc, row) {
4321
+ this.$outdent.autoOutdent(doc, row);
4322
+ };
4323
+
4324
+ this.getCompletions = function(state, session, pos, prefix) {
4325
+ return this.$completer.getCompletions("ruleset", session, pos, prefix);
4326
+ };
4327
+
4328
+ this.$id = "ace/mode/less";
4329
+ }).call(Mode.prototype);
4330
+
4331
+ exports.Mode = Mode;
4332
+
4333
+ });
4334
+
4335
+ define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
4336
+ "use strict";
4337
+
4338
+ var oop = require("../lib/oop");
4339
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
4340
+ var constantOtherSymbol = exports.constantOtherSymbol = {
4341
+ token : "constant.other.symbol.ruby", // symbol
4342
+ regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"
4343
+ };
4344
+
4345
+ var qString = exports.qString = {
4346
+ token : "string", // single line
4347
+ regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
4348
+ };
4349
+
4350
+ var qqString = exports.qqString = {
4351
+ token : "string", // single line
4352
+ regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
4353
+ };
4354
+
4355
+ var tString = exports.tString = {
4356
+ token : "string", // backtick string
4357
+ regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"
4358
+ };
4359
+
4360
+ var constantNumericHex = exports.constantNumericHex = {
4361
+ token : "constant.numeric", // hex
4362
+ regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"
4363
+ };
4364
+
4365
+ var constantNumericFloat = exports.constantNumericFloat = {
4366
+ token : "constant.numeric", // float
4367
+ regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"
4368
+ };
4369
+
4370
+ var instanceVariable = exports.instanceVariable = {
4371
+ token : "variable.instance", // instance variable
4372
+ regex : "@{1,2}[a-zA-Z_\\d]+"
4373
+ };
4374
+
4375
+ var RubyHighlightRules = function() {
4376
+
4377
+ var builtinFunctions = (
4378
+ "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" +
4379
+ "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" +
4380
+ "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" +
4381
+ "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" +
4382
+ "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" +
4383
+ "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" +
4384
+ "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" +
4385
+ "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" +
4386
+ "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" +
4387
+ "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" +
4388
+ "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" +
4389
+ "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" +
4390
+ "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" +
4391
+ "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" +
4392
+ "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" +
4393
+ "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" +
4394
+ "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" +
4395
+ "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" +
4396
+ "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" +
4397
+ "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" +
4398
+ "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" +
4399
+ "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" +
4400
+ "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" +
4401
+ "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" +
4402
+ "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" +
4403
+ "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" +
4404
+ "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" +
4405
+ "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" +
4406
+ "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" +
4407
+ "has_many|has_one|belongs_to|has_and_belongs_to_many"
4408
+ );
4409
+
4410
+ var keywords = (
4411
+ "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" +
4412
+ "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" +
4413
+ "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield"
4414
+ );
4415
+
4416
+ var buildinConstants = (
4417
+ "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" +
4418
+ "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING"
4419
+ );
4420
+
4421
+ var builtinVariables = (
4422
+ "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" +
4423
+ "$!|root_url|flash|session|cookies|params|request|response|logger|self"
4424
+ );
4425
+
4426
+ var keywordMapper = this.$keywords = this.createKeywordMapper({
4427
+ "keyword": keywords,
4428
+ "constant.language": buildinConstants,
4429
+ "variable.language": builtinVariables,
4430
+ "support.function": builtinFunctions,
4431
+ "invalid.deprecated": "debugger" // TODO is this a remnant from js mode?
4432
+ }, "identifier");
4433
+ this.$rules = {
4434
+ "start" : [
4435
+ {
4436
+ token : "comment",
4437
+ regex : "#.*$"
4438
+ }, {
4439
+ token : "comment", // multi line comment
4440
+ regex : "^=begin(?:$|\\s.*$)",
4441
+ next : "comment"
4442
+ }, {
4443
+ token : "string.regexp",
4444
+ regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"
4445
+ },
4446
+
4447
+ [{
4448
+ regex: "[{}]", onMatch: function(val, state, stack) {
4449
+ this.next = val == "{" ? this.nextState : "";
4450
+ if (val == "{" && stack.length) {
4451
+ stack.unshift("start", state);
4452
+ return "paren.lparen";
4453
+ }
4454
+ if (val == "}" && stack.length) {
4455
+ stack.shift();
4456
+ this.next = stack.shift();
4457
+ if (this.next.indexOf("string") != -1)
4458
+ return "paren.end";
4459
+ }
4460
+ return val == "{" ? "paren.lparen" : "paren.rparen";
4461
+ },
4462
+ nextState: "start"
4463
+ }, {
4464
+ token : "string.start",
4465
+ regex : /"/,
4466
+ push : [{
4467
+ token : "constant.language.escape",
4468
+ regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/
4469
+ }, {
4470
+ token : "paren.start",
4471
+ regex : /#{/,
4472
+ push : "start"
4473
+ }, {
4474
+ token : "string.end",
4475
+ regex : /"/,
4476
+ next : "pop"
4477
+ }, {
4478
+ defaultToken: "string"
4479
+ }]
4480
+ }, {
4481
+ token : "string.start",
4482
+ regex : /`/,
4483
+ push : [{
4484
+ token : "constant.language.escape",
4485
+ regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/
4486
+ }, {
4487
+ token : "paren.start",
4488
+ regex : /#{/,
4489
+ push : "start"
4490
+ }, {
4491
+ token : "string.end",
4492
+ regex : /`/,
4493
+ next : "pop"
4494
+ }, {
4495
+ defaultToken: "string"
4496
+ }]
4497
+ }, {
4498
+ token : "string.start",
4499
+ regex : /'/,
4500
+ push : [{
4501
+ token : "constant.language.escape",
4502
+ regex : /\\['\\]/
4503
+ }, {
4504
+ token : "string.end",
4505
+ regex : /'/,
4506
+ next : "pop"
4507
+ }, {
4508
+ defaultToken: "string"
4509
+ }]
4510
+ }],
4511
+ {
4512
+ token : "text", // namespaces aren't symbols
4513
+ regex : "::"
4514
+ }, {
4515
+ token : "variable.instance", // instance variable
4516
+ regex : "@{1,2}[a-zA-Z_\\d]+"
4517
+ }, {
4518
+ token : "support.class", // class name
4519
+ regex : "[A-Z][a-zA-Z_\\d]+"
4520
+ },
4521
+
4522
+ constantOtherSymbol,
4523
+ constantNumericHex,
4524
+ constantNumericFloat,
4525
+
4526
+ {
4527
+ token : "constant.language.boolean",
4528
+ regex : "(?:true|false)\\b"
4529
+ }, {
4530
+ token : keywordMapper,
4531
+ regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
4532
+ }, {
4533
+ token : "punctuation.separator.key-value",
4534
+ regex : "=>"
4535
+ }, {
4536
+ stateName: "heredoc",
4537
+ onMatch : function(value, currentState, stack) {
4538
+ var next = value[2] == '-' ? "indentedHeredoc" : "heredoc";
4539
+ var tokens = value.split(this.splitRegex);
4540
+ stack.push(next, tokens[3]);
4541
+ return [
4542
+ {type:"constant", value: tokens[1]},
4543
+ {type:"string", value: tokens[2]},
4544
+ {type:"support.class", value: tokens[3]},
4545
+ {type:"string", value: tokens[4]}
4546
+ ];
4547
+ },
4548
+ regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",
4549
+ rules: {
4550
+ heredoc: [{
4551
+ onMatch: function(value, currentState, stack) {
4552
+ if (value === stack[1]) {
4553
+ stack.shift();
4554
+ stack.shift();
4555
+ this.next = stack[0] || "start";
4556
+ return "support.class";
4557
+ }
4558
+ this.next = "";
4559
+ return "string";
4560
+ },
4561
+ regex: ".*$",
4562
+ next: "start"
4563
+ }],
4564
+ indentedHeredoc: [{
4565
+ token: "string",
4566
+ regex: "^ +"
4567
+ }, {
4568
+ onMatch: function(value, currentState, stack) {
4569
+ if (value === stack[1]) {
4570
+ stack.shift();
4571
+ stack.shift();
4572
+ this.next = stack[0] || "start";
4573
+ return "support.class";
4574
+ }
4575
+ this.next = "";
4576
+ return "string";
4577
+ },
4578
+ regex: ".*$",
4579
+ next: "start"
4580
+ }]
4581
+ }
4582
+ }, {
4583
+ regex : "$",
4584
+ token : "empty",
4585
+ next : function(currentState, stack) {
4586
+ if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc")
4587
+ return stack[0];
4588
+ return currentState;
4589
+ }
4590
+ }, {
4591
+ token : "string.character",
4592
+ regex : "\\B\\?."
4593
+ }, {
4594
+ token : "keyword.operator",
4595
+ regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"
4596
+ }, {
4597
+ token : "paren.lparen",
4598
+ regex : "[[({]"
4599
+ }, {
4600
+ token : "paren.rparen",
4601
+ regex : "[\\])}]"
4602
+ }, {
4603
+ token : "text",
4604
+ regex : "\\s+"
4605
+ }
4606
+ ],
4607
+ "comment" : [
4608
+ {
4609
+ token : "comment", // closing comment
4610
+ regex : "^=end(?:$|\\s.*$)",
4611
+ next : "start"
4612
+ }, {
4613
+ token : "comment", // comment spanning whole line
4614
+ regex : ".+"
4615
+ }
4616
+ ]
4617
+ };
4618
+
4619
+ this.normalizeRules();
4620
+ };
4621
+
4622
+ oop.inherits(RubyHighlightRules, TextHighlightRules);
4623
+
4624
+ exports.RubyHighlightRules = RubyHighlightRules;
4625
+ });
4626
+
4627
+ 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/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) {
4628
+ "use strict";
4629
+
4630
+ var oop = require("../lib/oop");
4631
+ var TextMode = require("./text").Mode;
4632
+ var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules;
4633
+ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
4634
+ var Range = require("../range").Range;
4635
+ var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
4636
+ var FoldMode = require("./folding/coffee").FoldMode;
4637
+
4638
+ var Mode = function() {
4639
+ this.HighlightRules = RubyHighlightRules;
4640
+ this.$outdent = new MatchingBraceOutdent();
4641
+ this.$behaviour = new CstyleBehaviour();
4642
+ this.foldingRules = new FoldMode();
4643
+ };
4644
+ oop.inherits(Mode, TextMode);
4645
+
4646
+ (function() {
4647
+
4648
+
4649
+ this.lineCommentStart = "#";
4650
+
4651
+ this.getNextLineIndent = function(state, line, tab) {
4652
+ var indent = this.$getIndent(line);
4653
+
4654
+ var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
4655
+ var tokens = tokenizedLine.tokens;
4656
+
4657
+ if (tokens.length && tokens[tokens.length-1].type == "comment") {
4658
+ return indent;
4659
+ }
4660
+
4661
+ if (state == "start") {
4662
+ var match = line.match(/^.*[\{\(\[]\s*$/);
4663
+ var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/);
4664
+ var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/);
4665
+ var startingConditional = line.match(/^\s*(if|else|when)\s*/);
4666
+ if (match || startingClassOrMethod || startingDoBlock || startingConditional) {
4667
+ indent += tab;
4668
+ }
4669
+ }
4670
+
4671
+ return indent;
4672
+ };
4673
+
4674
+ this.checkOutdent = function(state, line, input) {
4675
+ return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);
4676
+ };
4677
+
4678
+ this.autoOutdent = function(state, session, row) {
4679
+ var line = session.getLine(row);
4680
+ if (/}/.test(line))
4681
+ return this.$outdent.autoOutdent(session, row);
4682
+ var indent = this.$getIndent(line);
4683
+ var prevLine = session.getLine(row - 1);
4684
+ var prevIndent = this.$getIndent(prevLine);
4685
+ var tab = session.getTabString();
4686
+ if (prevIndent.length <= indent.length) {
4687
+ if (indent.slice(-tab.length) == tab)
4688
+ session.remove(new Range(row, indent.length-tab.length, row, indent.length));
4689
+ }
4690
+ };
4691
+
4692
+ this.$id = "ace/mode/ruby";
4693
+ }).call(Mode.prototype);
4694
+
4695
+ exports.Mode = Mode;
4696
+ });
4697
+
4698
+ define("ace/mode/slim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/slim_highlight_rules","ace/mode/javascript","ace/mode/markdown","ace/mode/coffee","ace/mode/scss","ace/mode/sass","ace/mode/less","ace/mode/ruby","ace/mode/css"], function(require, exports, module) {
4699
+ "use strict";
4700
+
4701
+ var oop = require("../lib/oop");
4702
+ var TextMode = require("./text").Mode;
4703
+ var SlimHighlightRules = require("./slim_highlight_rules").SlimHighlightRules;
4704
+
4705
+ var Mode = function() {
4706
+ TextMode.call(this);
4707
+ this.HighlightRules = SlimHighlightRules;
4708
+ this.createModeDelegates({
4709
+ javascript: require("./javascript").Mode,
4710
+ markdown: require("./markdown").Mode,
4711
+ coffee: require("./coffee").Mode,
4712
+ scss: require("./scss").Mode,
4713
+ sass: require("./sass").Mode,
4714
+ less: require("./less").Mode,
4715
+ ruby: require("./ruby").Mode,
4716
+ css: require("./css").Mode
4717
+ });
4718
+ };
4719
+
4720
+ oop.inherits(Mode, TextMode);
4721
+
4722
+ (function() {
4723
+
4724
+ this.$id = "ace/mode/slim";
4725
+ }).call(Mode.prototype);
4726
+
4727
+ exports.Mode = Mode;
4728
+ });
4729
+ (function() {
4730
+ window.require(["ace/mode/slim"], function(m) {
4731
+ if (typeof module == "object" && typeof exports == "object" && module) {
4732
+ module.exports = m;
4733
+ }
4734
+ });
4735
+ })();
4736
+