ace-rails-ap 2.0.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -4
  3. data/lib/ace/rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/ace/ace.js +14194 -13349
  5. data/vendor/assets/javascripts/ace/ext-beautify.js +335 -0
  6. data/vendor/assets/javascripts/ace/ext-chromevox.js +6 -1
  7. data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +8 -33
  8. data/vendor/assets/javascripts/ace/ext-emmet.js +487 -424
  9. data/vendor/assets/javascripts/ace/ext-error_marker.js +6 -0
  10. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +45 -72
  11. data/vendor/assets/javascripts/ace/ext-language_tools.js +734 -578
  12. data/vendor/assets/javascripts/ace/ext-linking.js +53 -0
  13. data/vendor/assets/javascripts/ace/ext-modelist.js +25 -10
  14. data/vendor/assets/javascripts/ace/ext-old_ie.js +93 -120
  15. data/vendor/assets/javascripts/ace/ext-searchbox.js +8 -41
  16. data/vendor/assets/javascripts/ace/ext-settings_menu.js +229 -234
  17. data/vendor/assets/javascripts/ace/ext-spellcheck.js +7 -3
  18. data/vendor/assets/javascripts/ace/ext-split.js +13 -37
  19. data/vendor/assets/javascripts/ace/ext-static_highlight.js +16 -39
  20. data/vendor/assets/javascripts/ace/ext-statusbar.js +8 -2
  21. data/vendor/assets/javascripts/ace/ext-textarea.js +254 -99
  22. data/vendor/assets/javascripts/ace/ext-themelist.js +13 -40
  23. data/vendor/assets/javascripts/ace/ext-whitespace.js +17 -41
  24. data/vendor/assets/javascripts/ace/keybinding-emacs.js +803 -788
  25. data/vendor/assets/javascripts/ace/keybinding-vim.js +1559 -1560
  26. data/vendor/assets/javascripts/ace/mode-abap.js +52 -83
  27. data/vendor/assets/javascripts/ace/mode-actionscript.js +27 -63
  28. data/vendor/assets/javascripts/ace/mode-ada.js +27 -58
  29. data/vendor/assets/javascripts/ace/mode-apache_conf.js +310 -0
  30. data/vendor/assets/javascripts/ace/mode-applescript.js +226 -0
  31. data/vendor/assets/javascripts/ace/mode-asciidoc.js +39 -70
  32. data/vendor/assets/javascripts/ace/mode-assembly_x86.js +26 -58
  33. data/vendor/assets/javascripts/ace/mode-autohotkey.js +27 -63
  34. data/vendor/assets/javascripts/ace/mode-batchfile.js +27 -63
  35. data/vendor/assets/javascripts/ace/mode-c9search.js +92 -112
  36. data/vendor/assets/javascripts/ace/mode-c_cpp.js +224 -223
  37. data/vendor/assets/javascripts/ace/mode-cirru.js +202 -0
  38. data/vendor/assets/javascripts/ace/mode-clojure.js +98 -92
  39. data/vendor/assets/javascripts/ace/mode-cobol.js +27 -58
  40. data/vendor/assets/javascripts/ace/mode-coffee.js +90 -122
  41. data/vendor/assets/javascripts/ace/mode-coldfusion.js +1908 -1464
  42. data/vendor/assets/javascripts/ace/mode-csharp.js +291 -264
  43. data/vendor/assets/javascripts/ace/mode-css.js +266 -267
  44. data/vendor/assets/javascripts/ace/mode-curly.js +796 -815
  45. data/vendor/assets/javascripts/ace/mode-d.js +64 -95
  46. data/vendor/assets/javascripts/ace/mode-dart.js +254 -256
  47. data/vendor/assets/javascripts/ace/mode-diff.js +27 -58
  48. data/vendor/assets/javascripts/ace/mode-django.js +856 -866
  49. data/vendor/assets/javascripts/ace/mode-dockerfile.js +759 -0
  50. data/vendor/assets/javascripts/ace/mode-dot.js +106 -106
  51. data/vendor/assets/javascripts/ace/mode-eiffel.js +135 -0
  52. data/vendor/assets/javascripts/ace/mode-ejs.js +931 -938
  53. data/vendor/assets/javascripts/ace/mode-erlang.js +27 -58
  54. data/vendor/assets/javascripts/ace/mode-forth.js +27 -63
  55. data/vendor/assets/javascripts/ace/mode-ftl.js +457 -508
  56. data/vendor/assets/javascripts/ace/mode-gcode.js +85 -0
  57. data/vendor/assets/javascripts/ace/mode-gherkin.js +129 -0
  58. data/vendor/assets/javascripts/ace/mode-gitignore.js +50 -0
  59. data/vendor/assets/javascripts/ace/mode-glsl.js +252 -248
  60. data/vendor/assets/javascripts/ace/mode-golang.js +206 -179
  61. data/vendor/assets/javascripts/ace/mode-groovy.js +310 -242
  62. data/vendor/assets/javascripts/ace/mode-haml.js +156 -190
  63. data/vendor/assets/javascripts/ace/mode-handlebars.js +815 -784
  64. data/vendor/assets/javascripts/ace/mode-haskell.js +27 -63
  65. data/vendor/assets/javascripts/ace/mode-haxe.js +206 -176
  66. data/vendor/assets/javascripts/ace/mode-html.js +779 -792
  67. data/vendor/assets/javascripts/ace/mode-html_ruby.js +916 -923
  68. data/vendor/assets/javascripts/ace/mode-ini.js +27 -58
  69. data/vendor/assets/javascripts/ace/mode-io.js +201 -0
  70. data/vendor/assets/javascripts/ace/mode-jack.js +169 -170
  71. data/vendor/assets/javascripts/ace/mode-jade.js +722 -774
  72. data/vendor/assets/javascripts/ace/mode-java.js +310 -245
  73. data/vendor/assets/javascripts/ace/mode-javascript.js +285 -247
  74. data/vendor/assets/javascripts/ace/mode-json.js +183 -184
  75. data/vendor/assets/javascripts/ace/mode-jsoniq.js +3211 -1274
  76. data/vendor/assets/javascripts/ace/mode-jsp.js +481 -504
  77. data/vendor/assets/javascripts/ace/mode-jsx.js +206 -176
  78. data/vendor/assets/javascripts/ace/mode-julia.js +33 -69
  79. data/vendor/assets/javascripts/ace/mode-latex.js +74 -41
  80. data/vendor/assets/javascripts/ace/mode-less.js +250 -251
  81. data/vendor/assets/javascripts/ace/mode-liquid.js +424 -475
  82. data/vendor/assets/javascripts/ace/mode-lisp.js +24 -57
  83. data/vendor/assets/javascripts/ace/mode-livescript.js +42 -41
  84. data/vendor/assets/javascripts/ace/mode-logiql.js +229 -230
  85. data/vendor/assets/javascripts/ace/mode-lsl.js +200 -441
  86. data/vendor/assets/javascripts/ace/mode-lua.js +136 -167
  87. data/vendor/assets/javascripts/ace/mode-luapage.js +904 -884
  88. data/vendor/assets/javascripts/ace/mode-lucene.js +22 -17
  89. data/vendor/assets/javascripts/ace/mode-makefile.js +162 -137
  90. data/vendor/assets/javascripts/ace/mode-markdown.js +846 -854
  91. data/vendor/assets/javascripts/ace/mode-matlab.js +98 -72
  92. data/vendor/assets/javascripts/ace/mode-mel.js +569 -0
  93. data/vendor/assets/javascripts/ace/mode-mushcode.js +84 -115
  94. data/vendor/assets/javascripts/ace/mode-mysql.js +49 -80
  95. data/vendor/assets/javascripts/ace/mode-nix.js +252 -256
  96. data/vendor/assets/javascripts/ace/mode-objectivec.js +242 -274
  97. data/vendor/assets/javascripts/ace/mode-ocaml.js +71 -102
  98. data/vendor/assets/javascripts/ace/mode-pascal.js +32 -68
  99. data/vendor/assets/javascripts/ace/mode-perl.js +67 -98
  100. data/vendor/assets/javascripts/ace/mode-pgsql.js +990 -982
  101. data/vendor/assets/javascripts/ace/mode-php.js +1878 -1900
  102. data/vendor/assets/javascripts/ace/mode-plain_text.js +3 -34
  103. data/vendor/assets/javascripts/ace/mode-powershell.js +181 -151
  104. data/vendor/assets/javascripts/ace/mode-praat.js +418 -0
  105. data/vendor/assets/javascripts/ace/mode-prolog.js +27 -63
  106. data/vendor/assets/javascripts/ace/mode-properties.js +20 -48
  107. data/vendor/assets/javascripts/ace/mode-protobuf.js +252 -259
  108. data/vendor/assets/javascripts/ace/mode-python.js +84 -115
  109. data/vendor/assets/javascripts/ace/mode-r.js +105 -140
  110. data/vendor/assets/javascripts/ace/mode-rdoc.js +84 -89
  111. data/vendor/assets/javascripts/ace/mode-rhtml.js +892 -908
  112. data/vendor/assets/javascripts/ace/mode-ruby.js +434 -98
  113. data/vendor/assets/javascripts/ace/mode-rust.js +27 -63
  114. data/vendor/assets/javascripts/ace/mode-sass.js +75 -106
  115. data/vendor/assets/javascripts/ace/mode-scad.js +219 -220
  116. data/vendor/assets/javascripts/ace/mode-scala.js +311 -243
  117. data/vendor/assets/javascripts/ace/mode-scheme.js +24 -60
  118. data/vendor/assets/javascripts/ace/mode-scss.js +250 -251
  119. data/vendor/assets/javascripts/ace/mode-sh.js +506 -118
  120. data/vendor/assets/javascripts/ace/mode-sjs.js +314 -280
  121. data/vendor/assets/javascripts/ace/mode-smarty.js +2474 -0
  122. data/vendor/assets/javascripts/ace/mode-snippets.js +89 -89
  123. data/vendor/assets/javascripts/ace/mode-soy_template.js +792 -811
  124. data/vendor/assets/javascripts/ace/mode-space.js +22 -23
  125. data/vendor/assets/javascripts/ace/mode-sql.js +31 -58
  126. data/vendor/assets/javascripts/ace/mode-stylus.js +161 -197
  127. data/vendor/assets/javascripts/ace/mode-svg.js +906 -836
  128. data/vendor/assets/javascripts/ace/mode-tcl.js +61 -92
  129. data/vendor/assets/javascripts/ace/mode-tex.js +36 -73
  130. data/vendor/assets/javascripts/ace/mode-text.js +1 -0
  131. data/vendor/assets/javascripts/ace/mode-textile.js +41 -72
  132. data/vendor/assets/javascripts/ace/mode-toml.js +26 -62
  133. data/vendor/assets/javascripts/ace/mode-twig.js +1196 -892
  134. data/vendor/assets/javascripts/ace/mode-typescript.js +313 -277
  135. data/vendor/assets/javascripts/ace/mode-vala.js +982 -0
  136. data/vendor/assets/javascripts/ace/mode-vbscript.js +25 -62
  137. data/vendor/assets/javascripts/ace/mode-velocity.js +2251 -1242
  138. data/vendor/assets/javascripts/ace/mode-verilog.js +27 -59
  139. data/vendor/assets/javascripts/ace/mode-vhdl.js +26 -55
  140. data/vendor/assets/javascripts/ace/mode-xml.js +319 -644
  141. data/vendor/assets/javascripts/ace/mode-xquery.js +2503 -588
  142. data/vendor/assets/javascripts/ace/mode-yaml.js +56 -90
  143. data/vendor/assets/javascripts/ace/snippets/abap.js +7 -0
  144. data/vendor/assets/javascripts/ace/snippets/actionscript.js +159 -0
  145. data/vendor/assets/javascripts/ace/snippets/ada.js +7 -0
  146. data/vendor/assets/javascripts/ace/snippets/apache_conf.js +7 -0
  147. data/vendor/assets/javascripts/ace/snippets/applescript.js +7 -0
  148. data/vendor/assets/javascripts/ace/snippets/asciidoc.js +7 -0
  149. data/vendor/assets/javascripts/ace/snippets/assembly_x86.js +7 -0
  150. data/vendor/assets/javascripts/ace/snippets/autohotkey.js +7 -0
  151. data/vendor/assets/javascripts/ace/snippets/batchfile.js +7 -0
  152. data/vendor/assets/javascripts/ace/snippets/c9search.js +7 -0
  153. data/vendor/assets/javascripts/ace/snippets/c_cpp.js +138 -0
  154. data/vendor/assets/javascripts/ace/snippets/cirru.js +7 -0
  155. data/vendor/assets/javascripts/ace/snippets/clojure.js +97 -0
  156. data/vendor/assets/javascripts/ace/snippets/cobol.js +7 -0
  157. data/vendor/assets/javascripts/ace/snippets/coffee.js +102 -0
  158. data/vendor/assets/javascripts/ace/snippets/coldfusion.js +7 -0
  159. data/vendor/assets/javascripts/ace/snippets/csharp.js +7 -0
  160. data/vendor/assets/javascripts/ace/snippets/css.js +974 -0
  161. data/vendor/assets/javascripts/ace/snippets/curly.js +7 -0
  162. data/vendor/assets/javascripts/ace/snippets/d.js +7 -0
  163. data/vendor/assets/javascripts/ace/snippets/dart.js +90 -0
  164. data/vendor/assets/javascripts/ace/snippets/diff.js +18 -0
  165. data/vendor/assets/javascripts/ace/snippets/django.js +115 -0
  166. data/vendor/assets/javascripts/ace/snippets/dockerfile.js +7 -0
  167. data/vendor/assets/javascripts/ace/snippets/dot.js +7 -0
  168. data/vendor/assets/javascripts/ace/snippets/eiffel.js +7 -0
  169. data/vendor/assets/javascripts/ace/snippets/ejs.js +7 -0
  170. data/vendor/assets/javascripts/ace/snippets/erlang.js +167 -0
  171. data/vendor/assets/javascripts/ace/snippets/forth.js +7 -0
  172. data/vendor/assets/javascripts/ace/snippets/ftl.js +7 -0
  173. data/vendor/assets/javascripts/ace/snippets/gcode.js +7 -0
  174. data/vendor/assets/javascripts/ace/snippets/gherkin.js +7 -0
  175. data/vendor/assets/javascripts/ace/snippets/gitignore.js +7 -0
  176. data/vendor/assets/javascripts/ace/snippets/glsl.js +7 -0
  177. data/vendor/assets/javascripts/ace/snippets/golang.js +7 -0
  178. data/vendor/assets/javascripts/ace/snippets/groovy.js +7 -0
  179. data/vendor/assets/javascripts/ace/snippets/haml.js +27 -0
  180. data/vendor/assets/javascripts/ace/snippets/handlebars.js +7 -0
  181. data/vendor/assets/javascripts/ace/snippets/haskell.js +89 -0
  182. data/vendor/assets/javascripts/ace/snippets/haxe.js +7 -0
  183. data/vendor/assets/javascripts/ace/snippets/html.js +835 -0
  184. data/vendor/assets/javascripts/ace/snippets/html_ruby.js +7 -0
  185. data/vendor/assets/javascripts/ace/snippets/ini.js +7 -0
  186. data/vendor/assets/javascripts/ace/snippets/io.js +69 -0
  187. data/vendor/assets/javascripts/ace/snippets/jack.js +7 -0
  188. data/vendor/assets/javascripts/ace/snippets/jade.js +7 -0
  189. data/vendor/assets/javascripts/ace/snippets/java.js +241 -0
  190. data/vendor/assets/javascripts/ace/snippets/javascript.js +189 -0
  191. data/vendor/assets/javascripts/ace/snippets/json.js +7 -0
  192. data/vendor/assets/javascripts/ace/snippets/jsoniq.js +68 -0
  193. data/vendor/assets/javascripts/ace/snippets/jsp.js +106 -0
  194. data/vendor/assets/javascripts/ace/snippets/jsx.js +7 -0
  195. data/vendor/assets/javascripts/ace/snippets/julia.js +7 -0
  196. data/vendor/assets/javascripts/ace/snippets/latex.js +7 -0
  197. data/vendor/assets/javascripts/ace/snippets/less.js +7 -0
  198. data/vendor/assets/javascripts/ace/snippets/liquid.js +7 -0
  199. data/vendor/assets/javascripts/ace/snippets/lisp.js +7 -0
  200. data/vendor/assets/javascripts/ace/snippets/livescript.js +7 -0
  201. data/vendor/assets/javascripts/ace/snippets/logiql.js +7 -0
  202. data/vendor/assets/javascripts/ace/snippets/lsl.js +1073 -0
  203. data/vendor/assets/javascripts/ace/snippets/lua.js +28 -0
  204. data/vendor/assets/javascripts/ace/snippets/luapage.js +7 -0
  205. data/vendor/assets/javascripts/ace/snippets/lucene.js +7 -0
  206. data/vendor/assets/javascripts/ace/snippets/makefile.js +11 -0
  207. data/vendor/assets/javascripts/ace/snippets/markdown.js +95 -0
  208. data/vendor/assets/javascripts/ace/snippets/matlab.js +7 -0
  209. data/vendor/assets/javascripts/ace/snippets/mel.js +7 -0
  210. data/vendor/assets/javascripts/ace/snippets/mushcode.js +7 -0
  211. data/vendor/assets/javascripts/ace/snippets/mysql.js +7 -0
  212. data/vendor/assets/javascripts/ace/snippets/nix.js +7 -0
  213. data/vendor/assets/javascripts/ace/snippets/objectivec.js +7 -0
  214. data/vendor/assets/javascripts/ace/snippets/ocaml.js +7 -0
  215. data/vendor/assets/javascripts/ace/snippets/pascal.js +7 -0
  216. data/vendor/assets/javascripts/ace/snippets/perl.js +354 -0
  217. data/vendor/assets/javascripts/ace/snippets/pgsql.js +7 -0
  218. data/vendor/assets/javascripts/ace/snippets/php.js +283 -0
  219. data/vendor/assets/javascripts/ace/snippets/plain_text.js +7 -0
  220. data/vendor/assets/javascripts/ace/snippets/powershell.js +7 -0
  221. data/vendor/assets/javascripts/ace/snippets/praat.js +7 -0
  222. data/vendor/assets/javascripts/ace/snippets/prolog.js +7 -0
  223. data/vendor/assets/javascripts/ace/snippets/properties.js +7 -0
  224. data/vendor/assets/javascripts/ace/snippets/protobuf.js +7 -0
  225. data/vendor/assets/javascripts/ace/snippets/python.js +165 -0
  226. data/vendor/assets/javascripts/ace/snippets/r.js +128 -0
  227. data/vendor/assets/javascripts/ace/snippets/rdoc.js +7 -0
  228. data/vendor/assets/javascripts/ace/snippets/rhtml.js +7 -0
  229. data/vendor/assets/javascripts/ace/snippets/ruby.js +935 -0
  230. data/vendor/assets/javascripts/ace/snippets/rust.js +7 -0
  231. data/vendor/assets/javascripts/ace/snippets/sass.js +7 -0
  232. data/vendor/assets/javascripts/ace/snippets/scad.js +7 -0
  233. data/vendor/assets/javascripts/ace/snippets/scala.js +7 -0
  234. data/vendor/assets/javascripts/ace/snippets/scheme.js +7 -0
  235. data/vendor/assets/javascripts/ace/snippets/scss.js +7 -0
  236. data/vendor/assets/javascripts/ace/snippets/sh.js +90 -0
  237. data/vendor/assets/javascripts/ace/snippets/sjs.js +7 -0
  238. data/vendor/assets/javascripts/ace/snippets/smarty.js +7 -0
  239. data/vendor/assets/javascripts/ace/snippets/snippets.js +16 -0
  240. data/vendor/assets/javascripts/ace/snippets/soy_template.js +7 -0
  241. data/vendor/assets/javascripts/ace/snippets/space.js +7 -0
  242. data/vendor/assets/javascripts/ace/snippets/sql.js +33 -0
  243. data/vendor/assets/javascripts/ace/snippets/stylus.js +7 -0
  244. data/vendor/assets/javascripts/ace/snippets/svg.js +7 -0
  245. data/vendor/assets/javascripts/ace/snippets/tcl.js +99 -0
  246. data/vendor/assets/javascripts/ace/snippets/tex.js +197 -0
  247. data/vendor/assets/javascripts/ace/snippets/text.js +7 -0
  248. data/vendor/assets/javascripts/ace/snippets/textile.js +37 -0
  249. data/vendor/assets/javascripts/ace/snippets/toml.js +7 -0
  250. data/vendor/assets/javascripts/ace/snippets/twig.js +7 -0
  251. data/vendor/assets/javascripts/ace/snippets/typescript.js +7 -0
  252. data/vendor/assets/javascripts/ace/snippets/vala.js +193 -0
  253. data/vendor/assets/javascripts/ace/snippets/vbscript.js +7 -0
  254. data/vendor/assets/javascripts/ace/snippets/velocity.js +36 -0
  255. data/vendor/assets/javascripts/ace/snippets/verilog.js +7 -0
  256. data/vendor/assets/javascripts/ace/snippets/vhdl.js +7 -0
  257. data/vendor/assets/javascripts/ace/snippets/xml.js +7 -0
  258. data/vendor/assets/javascripts/ace/snippets/xquery.js +68 -0
  259. data/vendor/assets/javascripts/ace/snippets/yaml.js +7 -0
  260. data/vendor/assets/javascripts/ace/theme-ambiance.js +4 -24
  261. data/vendor/assets/javascripts/ace/theme-chaos.js +2 -25
  262. data/vendor/assets/javascripts/ace/theme-chrome.js +2 -31
  263. data/vendor/assets/javascripts/ace/theme-clouds.js +1 -31
  264. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +1 -31
  265. data/vendor/assets/javascripts/ace/theme-cobalt.js +1 -31
  266. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +1 -31
  267. data/vendor/assets/javascripts/ace/theme-dawn.js +1 -31
  268. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +5 -31
  269. data/vendor/assets/javascripts/ace/theme-eclipse.js +7 -33
  270. data/vendor/assets/javascripts/ace/theme-github.js +2 -35
  271. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +1 -31
  272. data/vendor/assets/javascripts/ace/theme-katzenmilch.js +119 -0
  273. data/vendor/assets/javascripts/ace/theme-kr.js +1 -31
  274. data/vendor/assets/javascripts/ace/theme-kr_theme.js +57 -141
  275. data/vendor/assets/javascripts/ace/theme-kuroir.js +59 -0
  276. data/vendor/assets/javascripts/ace/theme-merbivore.js +1 -31
  277. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +1 -31
  278. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +1 -31
  279. data/vendor/assets/javascripts/ace/theme-monokai.js +1 -31
  280. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +1 -31
  281. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +1 -31
  282. data/vendor/assets/javascripts/ace/theme-solarized_light.js +1 -31
  283. data/vendor/assets/javascripts/ace/theme-terminal.js +1 -31
  284. data/vendor/assets/javascripts/ace/theme-textmate.js +3 -32
  285. data/vendor/assets/javascripts/ace/theme-tomorrow.js +1 -31
  286. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +1 -31
  287. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +1 -31
  288. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +1 -31
  289. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +1 -31
  290. data/vendor/assets/javascripts/ace/theme-twilight.js +1 -31
  291. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +1 -31
  292. data/vendor/assets/javascripts/ace/theme-xcode.js +2 -33
  293. data/vendor/assets/javascripts/ace/worker-coffee.js +5026 -5008
  294. data/vendor/assets/javascripts/ace/worker-css.js +5489 -5134
  295. data/vendor/assets/javascripts/ace/worker-html.js +11517 -0
  296. data/vendor/assets/javascripts/ace/worker-javascript.js +9810 -9501
  297. data/vendor/assets/javascripts/ace/worker-json.js +1583 -1564
  298. data/vendor/assets/javascripts/ace/worker-lua.js +2631 -2612
  299. data/vendor/assets/javascripts/ace/worker-php.js +2385 -2341
  300. data/vendor/assets/javascripts/ace/worker-xquery.js +31643 -3993
  301. metadata +147 -11
@@ -17,14 +17,16 @@ window.window = window;
17
17
  window.ace = window;
18
18
 
19
19
  window.onerror = function(message, file, line, col, err) {
20
- console.error("Worker " + err.stack);
20
+ console.error("Worker " + (err ? err.stack : message));
21
21
  };
22
22
 
23
23
  window.normalizeModule = function(parentId, moduleName) {
24
+ // normalize plugin requires
24
25
  if (moduleName.indexOf("!") !== -1) {
25
26
  var chunks = moduleName.split("!");
26
27
  return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]);
27
28
  }
29
+ // normalize relative requires
28
30
  if (moduleName.charAt(0) == ".") {
29
31
  var base = parentId.split("/").slice(0, -1).join("/");
30
32
  moduleName = (base ? base + "/" : "") + moduleName;
@@ -40,7 +42,7 @@ window.normalizeModule = function(parentId, moduleName) {
40
42
 
41
43
  window.require = function(parentId, id) {
42
44
  if (!id) {
43
- id = parentId
45
+ id = parentId;
44
46
  parentId = null;
45
47
  }
46
48
  if (!id.charAt)
@@ -79,12 +81,14 @@ window.define = function(id, deps, factory) {
79
81
  }
80
82
  } else if (arguments.length == 1) {
81
83
  factory = id;
82
- deps = []
84
+ deps = [];
83
85
  id = window.require.id;
84
86
  }
85
87
 
86
88
  if (!deps.length)
87
- deps = ['require', 'exports', 'module']
89
+ // If there is no dependencies, we inject 'require', 'exports' and
90
+ // 'module' as dependencies, to provide CommonJS compatibility.
91
+ deps = ['require', 'exports', 'module'];
88
92
 
89
93
  if (id.indexOf("text!") === 0)
90
94
  return;
@@ -99,10 +103,14 @@ window.define = function(id, deps, factory) {
99
103
  var module = this;
100
104
  var returnExports = factory.apply(this, deps.map(function(dep) {
101
105
  switch(dep) {
102
- case 'require': return req
103
- case 'exports': return module.exports
104
- case 'module': return module
105
- default: return req(dep)
106
+ // Because 'require', 'exports' and 'module' aren't actual
107
+ // dependencies, we must handle them seperately.
108
+ case 'require': return req;
109
+ case 'exports': return module.exports;
110
+ case 'module': return module;
111
+ // But for all other dependencies, we can just go ahead and
112
+ // require them.
113
+ default: return req(dep);
106
114
  }
107
115
  }));
108
116
  if (returnExports)
@@ -111,11 +119,11 @@ window.define = function(id, deps, factory) {
111
119
  }
112
120
  };
113
121
  };
114
- window.define.amd = {}
122
+ window.define.amd = {};
115
123
 
116
124
  window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
117
125
  require.tlns = topLevelNamespaces;
118
- }
126
+ };
119
127
 
120
128
  window.initSender = function initSender() {
121
129
 
@@ -147,10 +155,10 @@ window.initSender = function initSender() {
147
155
  }).call(Sender.prototype);
148
156
 
149
157
  return new Sender();
150
- }
158
+ };
151
159
 
152
- window.main = null;
153
- window.sender = null;
160
+ var main = window.main = null;
161
+ var sender = window.sender = null;
154
162
 
155
163
  window.onmessage = function(e) {
156
164
  var msg = e.data;
@@ -163,829 +171,560 @@ window.onmessage = function(e) {
163
171
  else if (msg.init) {
164
172
  initBaseUrls(msg.tlns);
165
173
  require("ace/lib/es5-shim");
166
- sender = initSender();
174
+ sender = window.sender = initSender();
167
175
  var clazz = require(msg.module)[msg.classname];
168
- main = new clazz(sender);
176
+ main = window.main = new clazz(sender);
169
177
  }
170
178
  else if (msg.event && sender) {
171
- sender._emit(msg.event, msg.data);
179
+ sender._signal(msg.event, msg.data);
172
180
  }
173
181
  };
174
- })(this);// https://github.com/kriskowal/es5-shim
182
+ })(this);
175
183
 
176
- define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {
184
+ define("ace/lib/oop",["require","exports","module"], function(require, exports, module) {
185
+ "use strict";
177
186
 
178
- function Empty() {}
179
-
180
- if (!Function.prototype.bind) {
181
- Function.prototype.bind = function bind(that) { // .length is 1
182
- var target = this;
183
- if (typeof target != "function") {
184
- throw new TypeError("Function.prototype.bind called on incompatible " + target);
187
+ exports.inherits = function(ctor, superCtor) {
188
+ ctor.super_ = superCtor;
189
+ ctor.prototype = Object.create(superCtor.prototype, {
190
+ constructor: {
191
+ value: ctor,
192
+ enumerable: false,
193
+ writable: true,
194
+ configurable: true
185
195
  }
186
- var args = slice.call(arguments, 1); // for normal call
187
- var bound = function () {
188
-
189
- if (this instanceof bound) {
190
-
191
- var result = target.apply(
192
- this,
193
- args.concat(slice.call(arguments))
194
- );
195
- if (Object(result) === result) {
196
- return result;
197
- }
198
- return this;
196
+ });
197
+ };
199
198
 
200
- } else {
201
- return target.apply(
202
- that,
203
- args.concat(slice.call(arguments))
204
- );
199
+ exports.mixin = function(obj, mixin) {
200
+ for (var key in mixin) {
201
+ obj[key] = mixin[key];
202
+ }
203
+ return obj;
204
+ };
205
205
 
206
- }
206
+ exports.implement = function(proto, mixin) {
207
+ exports.mixin(proto, mixin);
208
+ };
207
209
 
208
- };
209
- if(target.prototype) {
210
- Empty.prototype = target.prototype;
211
- bound.prototype = new Empty();
212
- Empty.prototype = null;
213
- }
214
- return bound;
215
- };
216
- }
217
- var call = Function.prototype.call;
218
- var prototypeOfArray = Array.prototype;
219
- var prototypeOfObject = Object.prototype;
220
- var slice = prototypeOfArray.slice;
221
- var _toString = call.bind(prototypeOfObject.toString);
222
- var owns = call.bind(prototypeOfObject.hasOwnProperty);
223
- var defineGetter;
224
- var defineSetter;
225
- var lookupGetter;
226
- var lookupSetter;
227
- var supportsAccessors;
228
- if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
229
- defineGetter = call.bind(prototypeOfObject.__defineGetter__);
230
- defineSetter = call.bind(prototypeOfObject.__defineSetter__);
231
- lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
232
- lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
233
- }
234
- if ([1,2].splice(0).length != 2) {
235
- if(function() { // test IE < 9 to splice bug - see issue #138
236
- function makeArray(l) {
237
- var a = new Array(l+2);
238
- a[0] = a[1] = 0;
239
- return a;
240
- }
241
- var array = [], lengthBefore;
242
-
243
- array.splice.apply(array, makeArray(20));
244
- array.splice.apply(array, makeArray(26));
210
+ });
245
211
 
246
- lengthBefore = array.length; //46
247
- array.splice(5, 0, "XXX"); // add one element
212
+ define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) {
213
+ "use strict";
248
214
 
249
- lengthBefore + 1 == array.length
215
+ var EventEmitter = {};
216
+ var stopPropagation = function() { this.propagationStopped = true; };
217
+ var preventDefault = function() { this.defaultPrevented = true; };
250
218
 
251
- if (lengthBefore + 1 == array.length) {
252
- return true;// has right splice implementation without bugs
253
- }
254
- }()) {//IE 6/7
255
- var array_splice = Array.prototype.splice;
256
- Array.prototype.splice = function(start, deleteCount) {
257
- if (!arguments.length) {
258
- return [];
259
- } else {
260
- return array_splice.apply(this, [
261
- start === void 0 ? 0 : start,
262
- deleteCount === void 0 ? (this.length - start) : deleteCount
263
- ].concat(slice.call(arguments, 2)))
264
- }
265
- };
266
- } else {//IE8
267
- Array.prototype.splice = function(pos, removeCount){
268
- var length = this.length;
269
- if (pos > 0) {
270
- if (pos > length)
271
- pos = length;
272
- } else if (pos == void 0) {
273
- pos = 0;
274
- } else if (pos < 0) {
275
- pos = Math.max(length + pos, 0);
276
- }
219
+ EventEmitter._emit =
220
+ EventEmitter._dispatchEvent = function(eventName, e) {
221
+ this._eventRegistry || (this._eventRegistry = {});
222
+ this._defaultHandlers || (this._defaultHandlers = {});
277
223
 
278
- if (!(pos+removeCount < length))
279
- removeCount = length - pos;
224
+ var listeners = this._eventRegistry[eventName] || [];
225
+ var defaultHandler = this._defaultHandlers[eventName];
226
+ if (!listeners.length && !defaultHandler)
227
+ return;
280
228
 
281
- var removed = this.slice(pos, pos+removeCount);
282
- var insert = slice.call(arguments, 2);
283
- var add = insert.length;
284
- if (pos === length) {
285
- if (add) {
286
- this.push.apply(this, insert);
287
- }
288
- } else {
289
- var remove = Math.min(removeCount, length - pos);
290
- var tailOldPos = pos + remove;
291
- var tailNewPos = tailOldPos + add - remove;
292
- var tailCount = length - tailOldPos;
293
- var lengthAfterRemove = length - remove;
229
+ if (typeof e != "object" || !e)
230
+ e = {};
294
231
 
295
- if (tailNewPos < tailOldPos) { // case A
296
- for (var i = 0; i < tailCount; ++i) {
297
- this[tailNewPos+i] = this[tailOldPos+i];
298
- }
299
- } else if (tailNewPos > tailOldPos) { // case B
300
- for (i = tailCount; i--; ) {
301
- this[tailNewPos+i] = this[tailOldPos+i];
302
- }
303
- } // else, add == remove (nothing to do)
232
+ if (!e.type)
233
+ e.type = eventName;
234
+ if (!e.stopPropagation)
235
+ e.stopPropagation = stopPropagation;
236
+ if (!e.preventDefault)
237
+ e.preventDefault = preventDefault;
304
238
 
305
- if (add && pos === lengthAfterRemove) {
306
- this.length = lengthAfterRemove; // truncate array
307
- this.push.apply(this, insert);
308
- } else {
309
- this.length = lengthAfterRemove + add; // reserves space
310
- for (i = 0; i < add; ++i) {
311
- this[pos+i] = insert[i];
312
- }
313
- }
314
- }
315
- return removed;
316
- };
239
+ listeners = listeners.slice();
240
+ for (var i=0; i<listeners.length; i++) {
241
+ listeners[i](e, this);
242
+ if (e.propagationStopped)
243
+ break;
317
244
  }
318
- }
319
- if (!Array.isArray) {
320
- Array.isArray = function isArray(obj) {
321
- return _toString(obj) == "[object Array]";
322
- };
323
- }
324
- var boxedString = Object("a"),
325
- splitString = boxedString[0] != "a" || !(0 in boxedString);
245
+
246
+ if (defaultHandler && !e.defaultPrevented)
247
+ return defaultHandler(e, this);
248
+ };
326
249
 
327
- if (!Array.prototype.forEach) {
328
- Array.prototype.forEach = function forEach(fun /*, thisp*/) {
329
- var object = toObject(this),
330
- self = splitString && _toString(this) == "[object String]" ?
331
- this.split("") :
332
- object,
333
- thisp = arguments[1],
334
- i = -1,
335
- length = self.length >>> 0;
336
- if (_toString(fun) != "[object Function]") {
337
- throw new TypeError(); // TODO message
338
- }
339
250
 
340
- while (++i < length) {
341
- if (i in self) {
342
- fun.call(thisp, self[i], i, object);
343
- }
344
- }
345
- };
346
- }
347
- if (!Array.prototype.map) {
348
- Array.prototype.map = function map(fun /*, thisp*/) {
349
- var object = toObject(this),
350
- self = splitString && _toString(this) == "[object String]" ?
351
- this.split("") :
352
- object,
353
- length = self.length >>> 0,
354
- result = Array(length),
355
- thisp = arguments[1];
356
- if (_toString(fun) != "[object Function]") {
357
- throw new TypeError(fun + " is not a function");
358
- }
251
+ EventEmitter._signal = function(eventName, e) {
252
+ var listeners = (this._eventRegistry || {})[eventName];
253
+ if (!listeners)
254
+ return;
255
+ listeners = listeners.slice();
256
+ for (var i=0; i<listeners.length; i++)
257
+ listeners[i](e, this);
258
+ };
359
259
 
360
- for (var i = 0; i < length; i++) {
361
- if (i in self)
362
- result[i] = fun.call(thisp, self[i], i, object);
363
- }
364
- return result;
365
- };
366
- }
367
- if (!Array.prototype.filter) {
368
- Array.prototype.filter = function filter(fun /*, thisp */) {
369
- var object = toObject(this),
370
- self = splitString && _toString(this) == "[object String]" ?
371
- this.split("") :
372
- object,
373
- length = self.length >>> 0,
374
- result = [],
375
- value,
376
- thisp = arguments[1];
377
- if (_toString(fun) != "[object Function]") {
378
- throw new TypeError(fun + " is not a function");
379
- }
260
+ EventEmitter.once = function(eventName, callback) {
261
+ var _self = this;
262
+ callback && this.addEventListener(eventName, function newCallback() {
263
+ _self.removeEventListener(eventName, newCallback);
264
+ callback.apply(null, arguments);
265
+ });
266
+ };
380
267
 
381
- for (var i = 0; i < length; i++) {
382
- if (i in self) {
383
- value = self[i];
384
- if (fun.call(thisp, value, i, object)) {
385
- result.push(value);
386
- }
268
+
269
+ EventEmitter.setDefaultHandler = function(eventName, callback) {
270
+ var handlers = this._defaultHandlers
271
+ if (!handlers)
272
+ handlers = this._defaultHandlers = {_disabled_: {}};
273
+
274
+ if (handlers[eventName]) {
275
+ var old = handlers[eventName];
276
+ var disabled = handlers._disabled_[eventName];
277
+ if (!disabled)
278
+ handlers._disabled_[eventName] = disabled = [];
279
+ disabled.push(old);
280
+ var i = disabled.indexOf(callback);
281
+ if (i != -1)
282
+ disabled.splice(i, 1);
283
+ }
284
+ handlers[eventName] = callback;
285
+ };
286
+ EventEmitter.removeDefaultHandler = function(eventName, callback) {
287
+ var handlers = this._defaultHandlers
288
+ if (!handlers)
289
+ return;
290
+ var disabled = handlers._disabled_[eventName];
291
+
292
+ if (handlers[eventName] == callback) {
293
+ var old = handlers[eventName];
294
+ if (disabled)
295
+ this.setDefaultHandler(eventName, disabled.pop());
296
+ } else if (disabled) {
297
+ var i = disabled.indexOf(callback);
298
+ if (i != -1)
299
+ disabled.splice(i, 1);
300
+ }
301
+ };
302
+
303
+ EventEmitter.on =
304
+ EventEmitter.addEventListener = function(eventName, callback, capturing) {
305
+ this._eventRegistry = this._eventRegistry || {};
306
+
307
+ var listeners = this._eventRegistry[eventName];
308
+ if (!listeners)
309
+ listeners = this._eventRegistry[eventName] = [];
310
+
311
+ if (listeners.indexOf(callback) == -1)
312
+ listeners[capturing ? "unshift" : "push"](callback);
313
+ return callback;
314
+ };
315
+
316
+ EventEmitter.off =
317
+ EventEmitter.removeListener =
318
+ EventEmitter.removeEventListener = function(eventName, callback) {
319
+ this._eventRegistry = this._eventRegistry || {};
320
+
321
+ var listeners = this._eventRegistry[eventName];
322
+ if (!listeners)
323
+ return;
324
+
325
+ var index = listeners.indexOf(callback);
326
+ if (index !== -1)
327
+ listeners.splice(index, 1);
328
+ };
329
+
330
+ EventEmitter.removeAllListeners = function(eventName) {
331
+ if (this._eventRegistry) this._eventRegistry[eventName] = [];
332
+ };
333
+
334
+ exports.EventEmitter = EventEmitter;
335
+
336
+ });
337
+
338
+ define("ace/range",["require","exports","module"], function(require, exports, module) {
339
+ "use strict";
340
+ var comparePoints = function(p1, p2) {
341
+ return p1.row - p2.row || p1.column - p2.column;
342
+ };
343
+ var Range = function(startRow, startColumn, endRow, endColumn) {
344
+ this.start = {
345
+ row: startRow,
346
+ column: startColumn
347
+ };
348
+
349
+ this.end = {
350
+ row: endRow,
351
+ column: endColumn
352
+ };
353
+ };
354
+
355
+ (function() {
356
+ this.isEqual = function(range) {
357
+ return this.start.row === range.start.row &&
358
+ this.end.row === range.end.row &&
359
+ this.start.column === range.start.column &&
360
+ this.end.column === range.end.column;
361
+ };
362
+ this.toString = function() {
363
+ return ("Range: [" + this.start.row + "/" + this.start.column +
364
+ "] -> [" + this.end.row + "/" + this.end.column + "]");
365
+ };
366
+
367
+ this.contains = function(row, column) {
368
+ return this.compare(row, column) == 0;
369
+ };
370
+ this.compareRange = function(range) {
371
+ var cmp,
372
+ end = range.end,
373
+ start = range.start;
374
+
375
+ cmp = this.compare(end.row, end.column);
376
+ if (cmp == 1) {
377
+ cmp = this.compare(start.row, start.column);
378
+ if (cmp == 1) {
379
+ return 2;
380
+ } else if (cmp == 0) {
381
+ return 1;
382
+ } else {
383
+ return 0;
384
+ }
385
+ } else if (cmp == -1) {
386
+ return -2;
387
+ } else {
388
+ cmp = this.compare(start.row, start.column);
389
+ if (cmp == -1) {
390
+ return -1;
391
+ } else if (cmp == 1) {
392
+ return 42;
393
+ } else {
394
+ return 0;
387
395
  }
388
396
  }
389
- return result;
390
397
  };
391
- }
392
- if (!Array.prototype.every) {
393
- Array.prototype.every = function every(fun /*, thisp */) {
394
- var object = toObject(this),
395
- self = splitString && _toString(this) == "[object String]" ?
396
- this.split("") :
397
- object,
398
- length = self.length >>> 0,
399
- thisp = arguments[1];
400
- if (_toString(fun) != "[object Function]") {
401
- throw new TypeError(fun + " is not a function");
398
+ this.comparePoint = function(p) {
399
+ return this.compare(p.row, p.column);
400
+ };
401
+ this.containsRange = function(range) {
402
+ return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
403
+ };
404
+ this.intersects = function(range) {
405
+ var cmp = this.compareRange(range);
406
+ return (cmp == -1 || cmp == 0 || cmp == 1);
407
+ };
408
+ this.isEnd = function(row, column) {
409
+ return this.end.row == row && this.end.column == column;
410
+ };
411
+ this.isStart = function(row, column) {
412
+ return this.start.row == row && this.start.column == column;
413
+ };
414
+ this.setStart = function(row, column) {
415
+ if (typeof row == "object") {
416
+ this.start.column = row.column;
417
+ this.start.row = row.row;
418
+ } else {
419
+ this.start.row = row;
420
+ this.start.column = column;
402
421
  }
403
-
404
- for (var i = 0; i < length; i++) {
405
- if (i in self && !fun.call(thisp, self[i], i, object)) {
422
+ };
423
+ this.setEnd = function(row, column) {
424
+ if (typeof row == "object") {
425
+ this.end.column = row.column;
426
+ this.end.row = row.row;
427
+ } else {
428
+ this.end.row = row;
429
+ this.end.column = column;
430
+ }
431
+ };
432
+ this.inside = function(row, column) {
433
+ if (this.compare(row, column) == 0) {
434
+ if (this.isEnd(row, column) || this.isStart(row, column)) {
406
435
  return false;
436
+ } else {
437
+ return true;
407
438
  }
408
439
  }
409
- return true;
440
+ return false;
410
441
  };
411
- }
412
- if (!Array.prototype.some) {
413
- Array.prototype.some = function some(fun /*, thisp */) {
414
- var object = toObject(this),
415
- self = splitString && _toString(this) == "[object String]" ?
416
- this.split("") :
417
- object,
418
- length = self.length >>> 0,
419
- thisp = arguments[1];
420
- if (_toString(fun) != "[object Function]") {
421
- throw new TypeError(fun + " is not a function");
422
- }
423
-
424
- for (var i = 0; i < length; i++) {
425
- if (i in self && fun.call(thisp, self[i], i, object)) {
442
+ this.insideStart = function(row, column) {
443
+ if (this.compare(row, column) == 0) {
444
+ if (this.isEnd(row, column)) {
445
+ return false;
446
+ } else {
426
447
  return true;
427
448
  }
428
449
  }
429
450
  return false;
430
451
  };
431
- }
432
- if (!Array.prototype.reduce) {
433
- Array.prototype.reduce = function reduce(fun /*, initial*/) {
434
- var object = toObject(this),
435
- self = splitString && _toString(this) == "[object String]" ?
436
- this.split("") :
437
- object,
438
- length = self.length >>> 0;
439
- if (_toString(fun) != "[object Function]") {
440
- throw new TypeError(fun + " is not a function");
452
+ this.insideEnd = function(row, column) {
453
+ if (this.compare(row, column) == 0) {
454
+ if (this.isStart(row, column)) {
455
+ return false;
456
+ } else {
457
+ return true;
458
+ }
441
459
  }
442
- if (!length && arguments.length == 1) {
443
- throw new TypeError("reduce of empty array with no initial value");
460
+ return false;
461
+ };
462
+ this.compare = function(row, column) {
463
+ if (!this.isMultiLine()) {
464
+ if (row === this.start.row) {
465
+ return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
466
+ };
444
467
  }
445
468
 
446
- var i = 0;
447
- var result;
448
- if (arguments.length >= 2) {
449
- result = arguments[1];
450
- } else {
451
- do {
452
- if (i in self) {
453
- result = self[i++];
454
- break;
455
- }
456
- if (++i >= length) {
457
- throw new TypeError("reduce of empty array with no initial value");
458
- }
459
- } while (true);
460
- }
469
+ if (row < this.start.row)
470
+ return -1;
461
471
 
462
- for (; i < length; i++) {
463
- if (i in self) {
464
- result = fun.call(void 0, result, self[i], i, object);
465
- }
466
- }
472
+ if (row > this.end.row)
473
+ return 1;
467
474
 
468
- return result;
469
- };
470
- }
471
- if (!Array.prototype.reduceRight) {
472
- Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
473
- var object = toObject(this),
474
- self = splitString && _toString(this) == "[object String]" ?
475
- this.split("") :
476
- object,
477
- length = self.length >>> 0;
478
- if (_toString(fun) != "[object Function]") {
479
- throw new TypeError(fun + " is not a function");
480
- }
481
- if (!length && arguments.length == 1) {
482
- throw new TypeError("reduceRight of empty array with no initial value");
483
- }
484
-
485
- var result, i = length - 1;
486
- if (arguments.length >= 2) {
487
- result = arguments[1];
488
- } else {
489
- do {
490
- if (i in self) {
491
- result = self[i--];
492
- break;
493
- }
494
- if (--i < 0) {
495
- throw new TypeError("reduceRight of empty array with no initial value");
496
- }
497
- } while (true);
498
- }
475
+ if (this.start.row === row)
476
+ return column >= this.start.column ? 0 : -1;
499
477
 
500
- do {
501
- if (i in this) {
502
- result = fun.call(void 0, result, self[i], i, object);
503
- }
504
- } while (i--);
478
+ if (this.end.row === row)
479
+ return column <= this.end.column ? 0 : 1;
505
480
 
506
- return result;
481
+ return 0;
507
482
  };
508
- }
509
- if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
510
- Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
511
- var self = splitString && _toString(this) == "[object String]" ?
512
- this.split("") :
513
- toObject(this),
514
- length = self.length >>> 0;
515
-
516
- if (!length) {
483
+ this.compareStart = function(row, column) {
484
+ if (this.start.row == row && this.start.column == column) {
517
485
  return -1;
486
+ } else {
487
+ return this.compare(row, column);
518
488
  }
519
-
520
- var i = 0;
521
- if (arguments.length > 1) {
522
- i = toInteger(arguments[1]);
523
- }
524
- i = i >= 0 ? i : Math.max(0, length + i);
525
- for (; i < length; i++) {
526
- if (i in self && self[i] === sought) {
527
- return i;
528
- }
489
+ };
490
+ this.compareEnd = function(row, column) {
491
+ if (this.end.row == row && this.end.column == column) {
492
+ return 1;
493
+ } else {
494
+ return this.compare(row, column);
529
495
  }
530
- return -1;
531
496
  };
532
- }
533
- if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
534
- Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
535
- var self = splitString && _toString(this) == "[object String]" ?
536
- this.split("") :
537
- toObject(this),
538
- length = self.length >>> 0;
539
-
540
- if (!length) {
497
+ this.compareInside = function(row, column) {
498
+ if (this.end.row == row && this.end.column == column) {
499
+ return 1;
500
+ } else if (this.start.row == row && this.start.column == column) {
541
501
  return -1;
502
+ } else {
503
+ return this.compare(row, column);
542
504
  }
543
- var i = length - 1;
544
- if (arguments.length > 1) {
545
- i = Math.min(i, toInteger(arguments[1]));
546
- }
547
- i = i >= 0 ? i : length - Math.abs(i);
548
- for (; i >= 0; i--) {
549
- if (i in self && sought === self[i]) {
550
- return i;
551
- }
552
- }
553
- return -1;
554
505
  };
555
- }
556
- if (!Object.getPrototypeOf) {
557
- Object.getPrototypeOf = function getPrototypeOf(object) {
558
- return object.__proto__ || (
559
- object.constructor ?
560
- object.constructor.prototype :
561
- prototypeOfObject
562
- );
506
+ this.clipRows = function(firstRow, lastRow) {
507
+ if (this.end.row > lastRow)
508
+ var end = {row: lastRow + 1, column: 0};
509
+ else if (this.end.row < firstRow)
510
+ var end = {row: firstRow, column: 0};
511
+
512
+ if (this.start.row > lastRow)
513
+ var start = {row: lastRow + 1, column: 0};
514
+ else if (this.start.row < firstRow)
515
+ var start = {row: firstRow, column: 0};
516
+
517
+ return Range.fromPoints(start || this.start, end || this.end);
563
518
  };
564
- }
565
- if (!Object.getOwnPropertyDescriptor) {
566
- var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
567
- "non-object: ";
568
- Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
569
- if ((typeof object != "object" && typeof object != "function") || object === null)
570
- throw new TypeError(ERR_NON_OBJECT + object);
571
- if (!owns(object, property))
572
- return;
519
+ this.extend = function(row, column) {
520
+ var cmp = this.compare(row, column);
573
521
 
574
- var descriptor, getter, setter;
575
- descriptor = { enumerable: true, configurable: true };
576
- if (supportsAccessors) {
577
- var prototype = object.__proto__;
578
- object.__proto__ = prototypeOfObject;
522
+ if (cmp == 0)
523
+ return this;
524
+ else if (cmp == -1)
525
+ var start = {row: row, column: column};
526
+ else
527
+ var end = {row: row, column: column};
579
528
 
580
- var getter = lookupGetter(object, property);
581
- var setter = lookupSetter(object, property);
582
- object.__proto__ = prototype;
529
+ return Range.fromPoints(start || this.start, end || this.end);
530
+ };
583
531
 
584
- if (getter || setter) {
585
- if (getter) descriptor.get = getter;
586
- if (setter) descriptor.set = setter;
587
- return descriptor;
588
- }
589
- }
590
- descriptor.value = object[property];
591
- return descriptor;
532
+ this.isEmpty = function() {
533
+ return (this.start.row === this.end.row && this.start.column === this.end.column);
592
534
  };
593
- }
594
- if (!Object.getOwnPropertyNames) {
595
- Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
596
- return Object.keys(object);
535
+ this.isMultiLine = function() {
536
+ return (this.start.row !== this.end.row);
597
537
  };
598
- }
599
- if (!Object.create) {
600
- var createEmpty;
601
- if (Object.prototype.__proto__ === null) {
602
- createEmpty = function () {
603
- return { "__proto__": null };
604
- };
605
- } else {
606
- createEmpty = function () {
607
- var empty = {};
608
- for (var i in empty)
609
- empty[i] = null;
610
- empty.constructor =
611
- empty.hasOwnProperty =
612
- empty.propertyIsEnumerable =
613
- empty.isPrototypeOf =
614
- empty.toLocaleString =
615
- empty.toString =
616
- empty.valueOf =
617
- empty.__proto__ = null;
618
- return empty;
619
- }
620
- }
538
+ this.clone = function() {
539
+ return Range.fromPoints(this.start, this.end);
540
+ };
541
+ this.collapseRows = function() {
542
+ if (this.end.column == 0)
543
+ return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
544
+ else
545
+ return new Range(this.start.row, 0, this.end.row, 0)
546
+ };
547
+ this.toScreenRange = function(session) {
548
+ var screenPosStart = session.documentToScreenPosition(this.start);
549
+ var screenPosEnd = session.documentToScreenPosition(this.end);
621
550
 
622
- Object.create = function create(prototype, properties) {
623
- var object;
624
- if (prototype === null) {
625
- object = createEmpty();
626
- } else {
627
- if (typeof prototype != "object")
628
- throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
629
- var Type = function () {};
630
- Type.prototype = prototype;
631
- object = new Type();
632
- object.__proto__ = prototype;
633
- }
634
- if (properties !== void 0)
635
- Object.defineProperties(object, properties);
636
- return object;
551
+ return new Range(
552
+ screenPosStart.row, screenPosStart.column,
553
+ screenPosEnd.row, screenPosEnd.column
554
+ );
555
+ };
556
+ this.moveBy = function(row, column) {
557
+ this.start.row += row;
558
+ this.start.column += column;
559
+ this.end.row += row;
560
+ this.end.column += column;
637
561
  };
638
- }
639
562
 
640
- function doesDefinePropertyWork(object) {
641
- try {
642
- Object.defineProperty(object, "sentinel", {});
643
- return "sentinel" in object;
644
- } catch (exception) {
645
- }
646
- }
647
- if (Object.defineProperty) {
648
- var definePropertyWorksOnObject = doesDefinePropertyWork({});
649
- var definePropertyWorksOnDom = typeof document == "undefined" ||
650
- doesDefinePropertyWork(document.createElement("div"));
651
- if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
652
- var definePropertyFallback = Object.defineProperty;
653
- }
654
- }
563
+ }).call(Range.prototype);
564
+ Range.fromPoints = function(start, end) {
565
+ return new Range(start.row, start.column, end.row, end.column);
566
+ };
567
+ Range.comparePoints = comparePoints;
655
568
 
656
- if (!Object.defineProperty || definePropertyFallback) {
657
- var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
658
- var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
659
- var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
660
- "on this javascript engine";
569
+ Range.comparePoints = function(p1, p2) {
570
+ return p1.row - p2.row || p1.column - p2.column;
571
+ };
661
572
 
662
- Object.defineProperty = function defineProperty(object, property, descriptor) {
663
- if ((typeof object != "object" && typeof object != "function") || object === null)
664
- throw new TypeError(ERR_NON_OBJECT_TARGET + object);
665
- if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
666
- throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
667
- if (definePropertyFallback) {
668
- try {
669
- return definePropertyFallback.call(Object, object, property, descriptor);
670
- } catch (exception) {
573
+
574
+ exports.Range = Range;
575
+ });
576
+
577
+ define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) {
578
+ "use strict";
579
+
580
+ var oop = require("./lib/oop");
581
+ var EventEmitter = require("./lib/event_emitter").EventEmitter;
582
+
583
+ var Anchor = exports.Anchor = function(doc, row, column) {
584
+ this.$onChange = this.onChange.bind(this);
585
+ this.attach(doc);
586
+
587
+ if (typeof column == "undefined")
588
+ this.setPosition(row.row, row.column);
589
+ else
590
+ this.setPosition(row, column);
591
+ };
592
+
593
+ (function() {
594
+
595
+ oop.implement(this, EventEmitter);
596
+ this.getPosition = function() {
597
+ return this.$clipPositionToDocument(this.row, this.column);
598
+ };
599
+ this.getDocument = function() {
600
+ return this.document;
601
+ };
602
+ this.$insertRight = false;
603
+ this.onChange = function(e) {
604
+ var delta = e.data;
605
+ var range = delta.range;
606
+
607
+ if (range.start.row == range.end.row && range.start.row != this.row)
608
+ return;
609
+
610
+ if (range.start.row > this.row)
611
+ return;
612
+
613
+ if (range.start.row == this.row && range.start.column > this.column)
614
+ return;
615
+
616
+ var row = this.row;
617
+ var column = this.column;
618
+ var start = range.start;
619
+ var end = range.end;
620
+
621
+ if (delta.action === "insertText") {
622
+ if (start.row === row && start.column <= column) {
623
+ if (start.column === column && this.$insertRight) {
624
+ } else if (start.row === end.row) {
625
+ column += end.column - start.column;
626
+ } else {
627
+ column -= start.column;
628
+ row += end.row - start.row;
629
+ }
630
+ } else if (start.row !== end.row && start.row < row) {
631
+ row += end.row - start.row;
671
632
  }
672
- }
673
- if (owns(descriptor, "value")) {
633
+ } else if (delta.action === "insertLines") {
634
+ if (start.row === row && column === 0 && this.$insertRight) {
635
+ }
636
+ else if (start.row <= row) {
637
+ row += end.row - start.row;
638
+ }
639
+ } else if (delta.action === "removeText") {
640
+ if (start.row === row && start.column < column) {
641
+ if (end.column >= column)
642
+ column = start.column;
643
+ else
644
+ column = Math.max(0, column - (end.column - start.column));
674
645
 
675
- if (supportsAccessors && (lookupGetter(object, property) ||
676
- lookupSetter(object, property)))
677
- {
678
- var prototype = object.__proto__;
679
- object.__proto__ = prototypeOfObject;
680
- delete object[property];
681
- object[property] = descriptor.value;
682
- object.__proto__ = prototype;
683
- } else {
684
- object[property] = descriptor.value;
646
+ } else if (start.row !== end.row && start.row < row) {
647
+ if (end.row === row)
648
+ column = Math.max(0, column - end.column) + start.column;
649
+ row -= (end.row - start.row);
650
+ } else if (end.row === row) {
651
+ row -= end.row - start.row;
652
+ column = Math.max(0, column - end.column) + start.column;
653
+ }
654
+ } else if (delta.action == "removeLines") {
655
+ if (start.row <= row) {
656
+ if (end.row <= row)
657
+ row -= end.row - start.row;
658
+ else {
659
+ row = start.row;
660
+ column = 0;
661
+ }
685
662
  }
686
- } else {
687
- if (!supportsAccessors)
688
- throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
689
- if (owns(descriptor, "get"))
690
- defineGetter(object, property, descriptor.get);
691
- if (owns(descriptor, "set"))
692
- defineSetter(object, property, descriptor.set);
693
663
  }
694
664
 
695
- return object;
665
+ this.setPosition(row, column, true);
696
666
  };
697
- }
698
- if (!Object.defineProperties) {
699
- Object.defineProperties = function defineProperties(object, properties) {
700
- for (var property in properties) {
701
- if (owns(properties, property))
702
- Object.defineProperty(object, property, properties[property]);
667
+ this.setPosition = function(row, column, noClip) {
668
+ var pos;
669
+ if (noClip) {
670
+ pos = {
671
+ row: row,
672
+ column: column
673
+ };
674
+ } else {
675
+ pos = this.$clipPositionToDocument(row, column);
703
676
  }
704
- return object;
705
- };
706
- }
707
- if (!Object.seal) {
708
- Object.seal = function seal(object) {
709
- return object;
710
- };
711
- }
712
- if (!Object.freeze) {
713
- Object.freeze = function freeze(object) {
714
- return object;
715
- };
716
- }
717
- try {
718
- Object.freeze(function () {});
719
- } catch (exception) {
720
- Object.freeze = (function freeze(freezeObject) {
721
- return function freeze(object) {
722
- if (typeof object == "function") {
723
- return object;
724
- } else {
725
- return freezeObject(object);
726
- }
677
+
678
+ if (this.row == pos.row && this.column == pos.column)
679
+ return;
680
+
681
+ var old = {
682
+ row: this.row,
683
+ column: this.column
727
684
  };
728
- })(Object.freeze);
729
- }
730
- if (!Object.preventExtensions) {
731
- Object.preventExtensions = function preventExtensions(object) {
732
- return object;
685
+
686
+ this.row = pos.row;
687
+ this.column = pos.column;
688
+ this._signal("change", {
689
+ old: old,
690
+ value: pos
691
+ });
733
692
  };
734
- }
735
- if (!Object.isSealed) {
736
- Object.isSealed = function isSealed(object) {
737
- return false;
693
+ this.detach = function() {
694
+ this.document.removeEventListener("change", this.$onChange);
738
695
  };
739
- }
740
- if (!Object.isFrozen) {
741
- Object.isFrozen = function isFrozen(object) {
742
- return false;
696
+ this.attach = function(doc) {
697
+ this.document = doc || this.document;
698
+ this.document.on("change", this.$onChange);
743
699
  };
744
- }
745
- if (!Object.isExtensible) {
746
- Object.isExtensible = function isExtensible(object) {
747
- if (Object(object) === object) {
748
- throw new TypeError(); // TODO message
700
+ this.$clipPositionToDocument = function(row, column) {
701
+ var pos = {};
702
+
703
+ if (row >= this.document.getLength()) {
704
+ pos.row = Math.max(0, this.document.getLength() - 1);
705
+ pos.column = this.document.getLine(pos.row).length;
749
706
  }
750
- var name = '';
751
- while (owns(object, name)) {
752
- name += '?';
707
+ else if (row < 0) {
708
+ pos.row = 0;
709
+ pos.column = 0;
710
+ }
711
+ else {
712
+ pos.row = row;
713
+ pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
753
714
  }
754
- object[name] = true;
755
- var returnValue = owns(object, name);
756
- delete object[name];
757
- return returnValue;
758
- };
759
- }
760
- if (!Object.keys) {
761
- var hasDontEnumBug = true,
762
- dontEnums = [
763
- "toString",
764
- "toLocaleString",
765
- "valueOf",
766
- "hasOwnProperty",
767
- "isPrototypeOf",
768
- "propertyIsEnumerable",
769
- "constructor"
770
- ],
771
- dontEnumsLength = dontEnums.length;
772
715
 
773
- for (var key in {"toString": null}) {
774
- hasDontEnumBug = false;
775
- }
716
+ if (column < 0)
717
+ pos.column = 0;
776
718
 
777
- Object.keys = function keys(object) {
719
+ return pos;
720
+ };
778
721
 
779
- if (
780
- (typeof object != "object" && typeof object != "function") ||
781
- object === null
782
- ) {
783
- throw new TypeError("Object.keys called on a non-object");
784
- }
722
+ }).call(Anchor.prototype);
785
723
 
786
- var keys = [];
787
- for (var name in object) {
788
- if (owns(object, name)) {
789
- keys.push(name);
790
- }
791
- }
792
-
793
- if (hasDontEnumBug) {
794
- for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
795
- var dontEnum = dontEnums[i];
796
- if (owns(object, dontEnum)) {
797
- keys.push(dontEnum);
798
- }
799
- }
800
- }
801
- return keys;
802
- };
803
-
804
- }
805
- if (!Date.now) {
806
- Date.now = function now() {
807
- return new Date().getTime();
808
- };
809
- }
810
- var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
811
- "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
812
- "\u2029\uFEFF";
813
- if (!String.prototype.trim || ws.trim()) {
814
- ws = "[" + ws + "]";
815
- var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
816
- trimEndRegexp = new RegExp(ws + ws + "*$");
817
- String.prototype.trim = function trim() {
818
- return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
819
- };
820
- }
821
-
822
- function toInteger(n) {
823
- n = +n;
824
- if (n !== n) { // isNaN
825
- n = 0;
826
- } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
827
- n = (n > 0 || -1) * Math.floor(Math.abs(n));
828
- }
829
- return n;
830
- }
831
-
832
- function isPrimitive(input) {
833
- var type = typeof input;
834
- return (
835
- input === null ||
836
- type === "undefined" ||
837
- type === "boolean" ||
838
- type === "number" ||
839
- type === "string"
840
- );
841
- }
842
-
843
- function toPrimitive(input) {
844
- var val, valueOf, toString;
845
- if (isPrimitive(input)) {
846
- return input;
847
- }
848
- valueOf = input.valueOf;
849
- if (typeof valueOf === "function") {
850
- val = valueOf.call(input);
851
- if (isPrimitive(val)) {
852
- return val;
853
- }
854
- }
855
- toString = input.toString;
856
- if (typeof toString === "function") {
857
- val = toString.call(input);
858
- if (isPrimitive(val)) {
859
- return val;
860
- }
861
- }
862
- throw new TypeError();
863
- }
864
- var toObject = function (o) {
865
- if (o == null) { // this matches both null and undefined
866
- throw new TypeError("can't convert "+o+" to object");
867
- }
868
- return Object(o);
869
- };
870
-
871
- });
872
-
873
- define('ace/mode/json_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/json/json_parse'], function(require, exports, module) {
874
-
875
-
876
- var oop = require("../lib/oop");
877
- var Mirror = require("../worker/mirror").Mirror;
878
- var parse = require("./json/json_parse");
879
-
880
- var JsonWorker = exports.JsonWorker = function(sender) {
881
- Mirror.call(this, sender);
882
- this.setTimeout(200);
883
- };
884
-
885
- oop.inherits(JsonWorker, Mirror);
886
-
887
- (function() {
888
-
889
- this.onUpdate = function() {
890
- var value = this.doc.getValue();
891
-
892
- try {
893
- var result = parse(value);
894
- } catch (e) {
895
- var pos = this.doc.indexToPosition(e.at-1);
896
- this.sender.emit("error", {
897
- row: pos.row,
898
- column: pos.column,
899
- text: e.message,
900
- type: "error"
901
- });
902
- return;
903
- }
904
- this.sender.emit("ok");
905
- };
906
-
907
- }).call(JsonWorker.prototype);
908
-
909
- });
910
-
911
- define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {
912
-
913
-
914
- exports.inherits = function(ctor, superCtor) {
915
- ctor.super_ = superCtor;
916
- ctor.prototype = Object.create(superCtor.prototype, {
917
- constructor: {
918
- value: ctor,
919
- enumerable: false,
920
- writable: true,
921
- configurable: true
922
- }
923
- });
924
- };
925
-
926
- exports.mixin = function(obj, mixin) {
927
- for (var key in mixin) {
928
- obj[key] = mixin[key];
929
- }
930
- return obj;
931
- };
932
-
933
- exports.implement = function(proto, mixin) {
934
- exports.mixin(proto, mixin);
935
- };
936
-
937
- });
938
- define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {
939
-
940
-
941
- var Document = require("../document").Document;
942
- var lang = require("../lib/lang");
943
-
944
- var Mirror = exports.Mirror = function(sender) {
945
- this.sender = sender;
946
- var doc = this.doc = new Document("");
947
-
948
- var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));
949
-
950
- var _self = this;
951
- sender.on("change", function(e) {
952
- doc.applyDeltas(e.data);
953
- if (_self.$timeout)
954
- return deferredUpdate.schedule(_self.$timeout);
955
- _self.onUpdate();
956
- });
957
- };
958
-
959
- (function() {
960
-
961
- this.$timeout = 500;
962
-
963
- this.setTimeout = function(timeout) {
964
- this.$timeout = timeout;
965
- };
966
-
967
- this.setValue = function(value) {
968
- this.doc.setValue(value);
969
- this.deferredUpdate.schedule(this.$timeout);
970
- };
971
-
972
- this.getValue = function(callbackId) {
973
- this.sender.callback(this.doc.getValue(), callbackId);
974
- };
975
-
976
- this.onUpdate = function() {
977
- };
978
-
979
- this.isPending = function() {
980
- return this.deferredUpdate.isPending();
981
- };
982
-
983
- }).call(Mirror.prototype);
984
-
985
- });
986
-
987
- define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {
724
+ });
988
725
 
726
+ define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) {
727
+ "use strict";
989
728
 
990
729
  var oop = require("./lib/oop");
991
730
  var EventEmitter = require("./lib/event_emitter").EventEmitter;
@@ -994,7 +733,7 @@ var Anchor = require("./anchor").Anchor;
994
733
 
995
734
  var Document = function(text) {
996
735
  this.$lines = [];
997
- if (text.length == 0) {
736
+ if (text.length === 0) {
998
737
  this.$lines = [""];
999
738
  } else if (Array.isArray(text)) {
1000
739
  this._insertLines(0, text);
@@ -1017,10 +756,10 @@ var Document = function(text) {
1017
756
  this.createAnchor = function(row, column) {
1018
757
  return new Anchor(this, row, column);
1019
758
  };
1020
- if ("aaa".split(/a/).length == 0)
759
+ if ("aaa".split(/a/).length === 0)
1021
760
  this.$split = function(text) {
1022
761
  return text.replace(/\r\n|\r/g, "\n").split("\n");
1023
- }
762
+ };
1024
763
  else
1025
764
  this.$split = function(text) {
1026
765
  return text.split(/\r\n|\r|\n/);
@@ -1030,6 +769,7 @@ var Document = function(text) {
1030
769
  this.$detectNewLine = function(text) {
1031
770
  var match = text.match(/^.*?(\r\n|\r|\n)/m);
1032
771
  this.$autoNewLine = match ? match[1] : "\n";
772
+ this._signal("changeNewLineMode");
1033
773
  };
1034
774
  this.getNewLineCharacter = function() {
1035
775
  switch (this.$newLineMode) {
@@ -1038,17 +778,18 @@ var Document = function(text) {
1038
778
  case "unix":
1039
779
  return "\n";
1040
780
  default:
1041
- return this.$autoNewLine;
781
+ return this.$autoNewLine || "\n";
1042
782
  }
1043
783
  };
1044
784
 
1045
- this.$autoNewLine = "\n";
785
+ this.$autoNewLine = "";
1046
786
  this.$newLineMode = "auto";
1047
787
  this.setNewLineMode = function(newLineMode) {
1048
788
  if (this.$newLineMode === newLineMode)
1049
789
  return;
1050
790
 
1051
791
  this.$newLineMode = newLineMode;
792
+ this._signal("changeNewLineMode");
1052
793
  };
1053
794
  this.getNewLineMode = function() {
1054
795
  return this.$newLineMode;
@@ -1118,9 +859,10 @@ var Document = function(text) {
1118
859
  this._insertLines = function(row, lines) {
1119
860
  if (lines.length == 0)
1120
861
  return {row: row, column: 0};
1121
- if (lines.length > 0xFFFF) {
1122
- var end = this._insertLines(row, lines.slice(0xFFFF));
1123
- lines = lines.slice(0, 0xFFFF);
862
+ while (lines.length > 0xF000) {
863
+ var end = this._insertLines(row, lines.slice(0, 0xF000));
864
+ lines = lines.slice(0xF000);
865
+ row = end.row;
1124
866
  }
1125
867
 
1126
868
  var args = [row, 0];
@@ -1133,8 +875,8 @@ var Document = function(text) {
1133
875
  range: range,
1134
876
  lines: lines
1135
877
  };
1136
- this._emit("change", { data: delta });
1137
- return end || range.end;
878
+ this._signal("change", { data: delta });
879
+ return range.end;
1138
880
  };
1139
881
  this.insertNewLine = function(position) {
1140
882
  position = this.$clipPosition(position);
@@ -1153,7 +895,7 @@ var Document = function(text) {
1153
895
  range: Range.fromPoints(position, end),
1154
896
  text: this.getNewLineCharacter()
1155
897
  };
1156
- this._emit("change", { data: delta });
898
+ this._signal("change", { data: delta });
1157
899
 
1158
900
  return end;
1159
901
  };
@@ -1176,12 +918,12 @@ var Document = function(text) {
1176
918
  range: Range.fromPoints(position, end),
1177
919
  text: text
1178
920
  };
1179
- this._emit("change", { data: delta });
921
+ this._signal("change", { data: delta });
1180
922
 
1181
923
  return end;
1182
924
  };
1183
925
  this.remove = function(range) {
1184
- if (!range instanceof Range)
926
+ if (!(range instanceof Range))
1185
927
  range = Range.fromPoints(range.start, range.end);
1186
928
  range.start = this.$clipPosition(range.start);
1187
929
  range.end = this.$clipPosition(range.end);
@@ -1227,7 +969,7 @@ var Document = function(text) {
1227
969
  range: range,
1228
970
  text: removed
1229
971
  };
1230
- this._emit("change", { data: delta });
972
+ this._signal("change", { data: delta });
1231
973
  return range.start;
1232
974
  };
1233
975
  this.removeLines = function(firstRow, lastRow) {
@@ -1246,7 +988,7 @@ var Document = function(text) {
1246
988
  nl: this.getNewLineCharacter(),
1247
989
  lines: removed
1248
990
  };
1249
- this._emit("change", { data: delta });
991
+ this._signal("change", { data: delta });
1250
992
  return removed;
1251
993
  };
1252
994
  this.removeNewLine = function(row) {
@@ -1263,10 +1005,10 @@ var Document = function(text) {
1263
1005
  range: range,
1264
1006
  text: this.getNewLineCharacter()
1265
1007
  };
1266
- this._emit("change", { data: delta });
1008
+ this._signal("change", { data: delta });
1267
1009
  };
1268
1010
  this.replace = function(range, text) {
1269
- if (!range instanceof Range)
1011
+ if (!(range instanceof Range))
1270
1012
  range = Range.fromPoints(range.start, range.end);
1271
1013
  if (text.length == 0 && range.isEmpty())
1272
1014
  return range.start;
@@ -1340,950 +1082,1227 @@ var Document = function(text) {
1340
1082
  exports.Document = Document;
1341
1083
  });
1342
1084
 
1343
- define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {
1344
-
1345
-
1346
- var EventEmitter = {};
1347
- var stopPropagation = function() { this.propagationStopped = true; };
1348
- var preventDefault = function() { this.defaultPrevented = true; };
1349
-
1350
- EventEmitter._emit =
1351
- EventEmitter._dispatchEvent = function(eventName, e) {
1352
- this._eventRegistry || (this._eventRegistry = {});
1353
- this._defaultHandlers || (this._defaultHandlers = {});
1085
+ define("ace/lib/lang",["require","exports","module"], function(require, exports, module) {
1086
+ "use strict";
1354
1087
 
1355
- var listeners = this._eventRegistry[eventName] || [];
1356
- var defaultHandler = this._defaultHandlers[eventName];
1357
- if (!listeners.length && !defaultHandler)
1358
- return;
1088
+ exports.last = function(a) {
1089
+ return a[a.length - 1];
1090
+ };
1359
1091
 
1360
- if (typeof e != "object" || !e)
1361
- e = {};
1092
+ exports.stringReverse = function(string) {
1093
+ return string.split("").reverse().join("");
1094
+ };
1362
1095
 
1363
- if (!e.type)
1364
- e.type = eventName;
1365
- if (!e.stopPropagation)
1366
- e.stopPropagation = stopPropagation;
1367
- if (!e.preventDefault)
1368
- e.preventDefault = preventDefault;
1096
+ exports.stringRepeat = function (string, count) {
1097
+ var result = '';
1098
+ while (count > 0) {
1099
+ if (count & 1)
1100
+ result += string;
1369
1101
 
1370
- listeners = listeners.slice();
1371
- for (var i=0; i<listeners.length; i++) {
1372
- listeners[i](e, this);
1373
- if (e.propagationStopped)
1374
- break;
1102
+ if (count >>= 1)
1103
+ string += string;
1375
1104
  }
1376
-
1377
- if (defaultHandler && !e.defaultPrevented)
1378
- return defaultHandler(e, this);
1105
+ return result;
1379
1106
  };
1380
1107
 
1108
+ var trimBeginRegexp = /^\s\s*/;
1109
+ var trimEndRegexp = /\s\s*$/;
1381
1110
 
1382
- EventEmitter._signal = function(eventName, e) {
1383
- var listeners = (this._eventRegistry || {})[eventName];
1384
- if (!listeners)
1385
- return;
1386
- listeners = listeners.slice();
1387
- for (var i=0; i<listeners.length; i++)
1388
- listeners[i](e, this);
1111
+ exports.stringTrimLeft = function (string) {
1112
+ return string.replace(trimBeginRegexp, '');
1389
1113
  };
1390
1114
 
1391
- EventEmitter.once = function(eventName, callback) {
1392
- var _self = this;
1393
- callback && this.addEventListener(eventName, function newCallback() {
1394
- _self.removeEventListener(eventName, newCallback);
1395
- callback.apply(null, arguments);
1396
- });
1115
+ exports.stringTrimRight = function (string) {
1116
+ return string.replace(trimEndRegexp, '');
1397
1117
  };
1398
1118
 
1399
-
1400
- EventEmitter.setDefaultHandler = function(eventName, callback) {
1401
- var handlers = this._defaultHandlers
1402
- if (!handlers)
1403
- handlers = this._defaultHandlers = {_disabled_: {}};
1404
-
1405
- if (handlers[eventName]) {
1406
- var old = handlers[eventName];
1407
- var disabled = handlers._disabled_[eventName];
1408
- if (!disabled)
1409
- handlers._disabled_[eventName] = disabled = [];
1410
- disabled.push(old);
1411
- var i = disabled.indexOf(callback);
1412
- if (i != -1)
1413
- disabled.splice(i, 1);
1119
+ exports.copyObject = function(obj) {
1120
+ var copy = {};
1121
+ for (var key in obj) {
1122
+ copy[key] = obj[key];
1414
1123
  }
1415
- handlers[eventName] = callback;
1124
+ return copy;
1416
1125
  };
1417
- EventEmitter.removeDefaultHandler = function(eventName, callback) {
1418
- var handlers = this._defaultHandlers
1419
- if (!handlers)
1420
- return;
1421
- var disabled = handlers._disabled_[eventName];
1422
-
1423
- if (handlers[eventName] == callback) {
1424
- var old = handlers[eventName];
1425
- if (disabled)
1426
- this.setDefaultHandler(eventName, disabled.pop());
1427
- } else if (disabled) {
1428
- var i = disabled.indexOf(callback);
1429
- if (i != -1)
1430
- disabled.splice(i, 1);
1126
+
1127
+ exports.copyArray = function(array){
1128
+ var copy = [];
1129
+ for (var i=0, l=array.length; i<l; i++) {
1130
+ if (array[i] && typeof array[i] == "object")
1131
+ copy[i] = this.copyObject( array[i] );
1132
+ else
1133
+ copy[i] = array[i];
1431
1134
  }
1135
+ return copy;
1432
1136
  };
1433
1137
 
1434
- EventEmitter.on =
1435
- EventEmitter.addEventListener = function(eventName, callback, capturing) {
1436
- this._eventRegistry = this._eventRegistry || {};
1138
+ exports.deepCopy = function (obj) {
1139
+ if (typeof obj !== "object" || !obj)
1140
+ return obj;
1141
+ var cons = obj.constructor;
1142
+ if (cons === RegExp)
1143
+ return obj;
1144
+
1145
+ var copy = cons();
1146
+ for (var key in obj) {
1147
+ if (typeof obj[key] === "object") {
1148
+ copy[key] = exports.deepCopy(obj[key]);
1149
+ } else {
1150
+ copy[key] = obj[key];
1151
+ }
1152
+ }
1153
+ return copy;
1154
+ };
1437
1155
 
1438
- var listeners = this._eventRegistry[eventName];
1439
- if (!listeners)
1440
- listeners = this._eventRegistry[eventName] = [];
1156
+ exports.arrayToMap = function(arr) {
1157
+ var map = {};
1158
+ for (var i=0; i<arr.length; i++) {
1159
+ map[arr[i]] = 1;
1160
+ }
1161
+ return map;
1441
1162
 
1442
- if (listeners.indexOf(callback) == -1)
1443
- listeners[capturing ? "unshift" : "push"](callback);
1444
- return callback;
1445
1163
  };
1446
1164
 
1447
- EventEmitter.off =
1448
- EventEmitter.removeListener =
1449
- EventEmitter.removeEventListener = function(eventName, callback) {
1450
- this._eventRegistry = this._eventRegistry || {};
1165
+ exports.createMap = function(props) {
1166
+ var map = Object.create(null);
1167
+ for (var i in props) {
1168
+ map[i] = props[i];
1169
+ }
1170
+ return map;
1171
+ };
1172
+ exports.arrayRemove = function(array, value) {
1173
+ for (var i = 0; i <= array.length; i++) {
1174
+ if (value === array[i]) {
1175
+ array.splice(i, 1);
1176
+ }
1177
+ }
1178
+ };
1451
1179
 
1452
- var listeners = this._eventRegistry[eventName];
1453
- if (!listeners)
1454
- return;
1180
+ exports.escapeRegExp = function(str) {
1181
+ return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
1182
+ };
1455
1183
 
1456
- var index = listeners.indexOf(callback);
1457
- if (index !== -1)
1458
- listeners.splice(index, 1);
1184
+ exports.escapeHTML = function(str) {
1185
+ return str.replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
1459
1186
  };
1460
1187
 
1461
- EventEmitter.removeAllListeners = function(eventName) {
1462
- if (this._eventRegistry) this._eventRegistry[eventName] = [];
1188
+ exports.getMatchOffsets = function(string, regExp) {
1189
+ var matches = [];
1190
+
1191
+ string.replace(regExp, function(str) {
1192
+ matches.push({
1193
+ offset: arguments[arguments.length-2],
1194
+ length: str.length
1195
+ });
1196
+ });
1197
+
1198
+ return matches;
1463
1199
  };
1200
+ exports.deferredCall = function(fcn) {
1464
1201
 
1465
- exports.EventEmitter = EventEmitter;
1202
+ var timer = null;
1203
+ var callback = function() {
1204
+ timer = null;
1205
+ fcn();
1206
+ };
1466
1207
 
1467
- });
1208
+ var deferred = function(timeout) {
1209
+ deferred.cancel();
1210
+ timer = setTimeout(callback, timeout || 0);
1211
+ return deferred;
1212
+ };
1468
1213
 
1469
- define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {
1214
+ deferred.schedule = deferred;
1470
1215
 
1471
- var comparePoints = function(p1, p2) {
1472
- return p1.row - p2.row || p1.column - p2.column;
1473
- };
1474
- var Range = function(startRow, startColumn, endRow, endColumn) {
1475
- this.start = {
1476
- row: startRow,
1477
- column: startColumn
1216
+ deferred.call = function() {
1217
+ this.cancel();
1218
+ fcn();
1219
+ return deferred;
1478
1220
  };
1479
1221
 
1480
- this.end = {
1481
- row: endRow,
1482
- column: endColumn
1222
+ deferred.cancel = function() {
1223
+ clearTimeout(timer);
1224
+ timer = null;
1225
+ return deferred;
1483
1226
  };
1227
+
1228
+ deferred.isPending = function() {
1229
+ return timer;
1230
+ };
1231
+
1232
+ return deferred;
1484
1233
  };
1485
1234
 
1486
- (function() {
1487
- this.isEqual = function(range) {
1488
- return this.start.row === range.start.row &&
1489
- this.end.row === range.end.row &&
1490
- this.start.column === range.start.column &&
1491
- this.end.column === range.end.column;
1235
+
1236
+ exports.delayedCall = function(fcn, defaultTimeout) {
1237
+ var timer = null;
1238
+ var callback = function() {
1239
+ timer = null;
1240
+ fcn();
1492
1241
  };
1493
- this.toString = function() {
1494
- return ("Range: [" + this.start.row + "/" + this.start.column +
1495
- "] -> [" + this.end.row + "/" + this.end.column + "]");
1242
+
1243
+ var _self = function(timeout) {
1244
+ if (timer == null)
1245
+ timer = setTimeout(callback, timeout || defaultTimeout);
1496
1246
  };
1497
1247
 
1498
- this.contains = function(row, column) {
1499
- return this.compare(row, column) == 0;
1248
+ _self.delay = function(timeout) {
1249
+ timer && clearTimeout(timer);
1250
+ timer = setTimeout(callback, timeout || defaultTimeout);
1500
1251
  };
1501
- this.compareRange = function(range) {
1502
- var cmp,
1503
- end = range.end,
1504
- start = range.start;
1252
+ _self.schedule = _self;
1505
1253
 
1506
- cmp = this.compare(end.row, end.column);
1507
- if (cmp == 1) {
1508
- cmp = this.compare(start.row, start.column);
1509
- if (cmp == 1) {
1510
- return 2;
1511
- } else if (cmp == 0) {
1512
- return 1;
1513
- } else {
1514
- return 0;
1515
- }
1516
- } else if (cmp == -1) {
1517
- return -2;
1518
- } else {
1519
- cmp = this.compare(start.row, start.column);
1520
- if (cmp == -1) {
1521
- return -1;
1522
- } else if (cmp == 1) {
1523
- return 42;
1524
- } else {
1525
- return 0;
1526
- }
1527
- }
1254
+ _self.call = function() {
1255
+ this.cancel();
1256
+ fcn();
1528
1257
  };
1529
- this.comparePoint = function(p) {
1530
- return this.compare(p.row, p.column);
1258
+
1259
+ _self.cancel = function() {
1260
+ timer && clearTimeout(timer);
1261
+ timer = null;
1531
1262
  };
1532
- this.containsRange = function(range) {
1533
- return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
1263
+
1264
+ _self.isPending = function() {
1265
+ return timer;
1534
1266
  };
1535
- this.intersects = function(range) {
1536
- var cmp = this.compareRange(range);
1537
- return (cmp == -1 || cmp == 0 || cmp == 1);
1267
+
1268
+ return _self;
1269
+ };
1270
+ });
1271
+
1272
+ define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"], function(require, exports, module) {
1273
+ "use strict";
1274
+
1275
+ var Document = require("../document").Document;
1276
+ var lang = require("../lib/lang");
1277
+
1278
+ var Mirror = exports.Mirror = function(sender) {
1279
+ this.sender = sender;
1280
+ var doc = this.doc = new Document("");
1281
+
1282
+ var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));
1283
+
1284
+ var _self = this;
1285
+ sender.on("change", function(e) {
1286
+ doc.applyDeltas(e.data);
1287
+ if (_self.$timeout)
1288
+ return deferredUpdate.schedule(_self.$timeout);
1289
+ _self.onUpdate();
1290
+ });
1291
+ };
1292
+
1293
+ (function() {
1294
+
1295
+ this.$timeout = 500;
1296
+
1297
+ this.setTimeout = function(timeout) {
1298
+ this.$timeout = timeout;
1538
1299
  };
1539
- this.isEnd = function(row, column) {
1540
- return this.end.row == row && this.end.column == column;
1300
+
1301
+ this.setValue = function(value) {
1302
+ this.doc.setValue(value);
1303
+ this.deferredUpdate.schedule(this.$timeout);
1541
1304
  };
1542
- this.isStart = function(row, column) {
1543
- return this.start.row == row && this.start.column == column;
1305
+
1306
+ this.getValue = function(callbackId) {
1307
+ this.sender.callback(this.doc.getValue(), callbackId);
1544
1308
  };
1545
- this.setStart = function(row, column) {
1546
- if (typeof row == "object") {
1547
- this.start.column = row.column;
1548
- this.start.row = row.row;
1549
- } else {
1550
- this.start.row = row;
1551
- this.start.column = column;
1552
- }
1309
+
1310
+ this.onUpdate = function() {
1553
1311
  };
1554
- this.setEnd = function(row, column) {
1555
- if (typeof row == "object") {
1556
- this.end.column = row.column;
1557
- this.end.row = row.row;
1558
- } else {
1559
- this.end.row = row;
1560
- this.end.column = column;
1561
- }
1562
- };
1563
- this.inside = function(row, column) {
1564
- if (this.compare(row, column) == 0) {
1565
- if (this.isEnd(row, column) || this.isStart(row, column)) {
1566
- return false;
1567
- } else {
1568
- return true;
1569
- }
1570
- }
1571
- return false;
1572
- };
1573
- this.insideStart = function(row, column) {
1574
- if (this.compare(row, column) == 0) {
1575
- if (this.isEnd(row, column)) {
1576
- return false;
1577
- } else {
1578
- return true;
1579
- }
1580
- }
1581
- return false;
1582
- };
1583
- this.insideEnd = function(row, column) {
1584
- if (this.compare(row, column) == 0) {
1585
- if (this.isStart(row, column)) {
1586
- return false;
1587
- } else {
1588
- return true;
1589
- }
1590
- }
1591
- return false;
1312
+
1313
+ this.isPending = function() {
1314
+ return this.deferredUpdate.isPending();
1592
1315
  };
1593
- this.compare = function(row, column) {
1594
- if (!this.isMultiLine()) {
1595
- if (row === this.start.row) {
1596
- return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
1597
- };
1598
- }
1599
-
1600
- if (row < this.start.row)
1601
- return -1;
1316
+
1317
+ }).call(Mirror.prototype);
1602
1318
 
1603
- if (row > this.end.row)
1604
- return 1;
1319
+ });
1605
1320
 
1606
- if (this.start.row === row)
1607
- return column >= this.start.column ? 0 : -1;
1321
+ define("ace/mode/json/json_parse",["require","exports","module"], function(require, exports, module) {
1322
+ "use strict";
1608
1323
 
1609
- if (this.end.row === row)
1610
- return column <= this.end.column ? 0 : 1;
1324
+ var at, // The index of the current character
1325
+ ch, // The current character
1326
+ escapee = {
1327
+ '"': '"',
1328
+ '\\': '\\',
1329
+ '/': '/',
1330
+ b: '\b',
1331
+ f: '\f',
1332
+ n: '\n',
1333
+ r: '\r',
1334
+ t: '\t'
1335
+ },
1336
+ text,
1611
1337
 
1612
- return 0;
1613
- };
1614
- this.compareStart = function(row, column) {
1615
- if (this.start.row == row && this.start.column == column) {
1616
- return -1;
1617
- } else {
1618
- return this.compare(row, column);
1619
- }
1620
- };
1621
- this.compareEnd = function(row, column) {
1622
- if (this.end.row == row && this.end.column == column) {
1623
- return 1;
1624
- } else {
1625
- return this.compare(row, column);
1626
- }
1627
- };
1628
- this.compareInside = function(row, column) {
1629
- if (this.end.row == row && this.end.column == column) {
1630
- return 1;
1631
- } else if (this.start.row == row && this.start.column == column) {
1632
- return -1;
1633
- } else {
1634
- return this.compare(row, column);
1635
- }
1636
- };
1637
- this.clipRows = function(firstRow, lastRow) {
1638
- if (this.end.row > lastRow)
1639
- var end = {row: lastRow + 1, column: 0};
1640
- else if (this.end.row < firstRow)
1641
- var end = {row: firstRow, column: 0};
1338
+ error = function (m) {
1642
1339
 
1643
- if (this.start.row > lastRow)
1644
- var start = {row: lastRow + 1, column: 0};
1645
- else if (this.start.row < firstRow)
1646
- var start = {row: firstRow, column: 0};
1340
+ throw {
1341
+ name: 'SyntaxError',
1342
+ message: m,
1343
+ at: at,
1344
+ text: text
1345
+ };
1346
+ },
1647
1347
 
1648
- return Range.fromPoints(start || this.start, end || this.end);
1649
- };
1650
- this.extend = function(row, column) {
1651
- var cmp = this.compare(row, column);
1348
+ next = function (c) {
1652
1349
 
1653
- if (cmp == 0)
1654
- return this;
1655
- else if (cmp == -1)
1656
- var start = {row: row, column: column};
1657
- else
1658
- var end = {row: row, column: column};
1350
+ if (c && c !== ch) {
1351
+ error("Expected '" + c + "' instead of '" + ch + "'");
1352
+ }
1659
1353
 
1660
- return Range.fromPoints(start || this.start, end || this.end);
1661
- };
1354
+ ch = text.charAt(at);
1355
+ at += 1;
1356
+ return ch;
1357
+ },
1662
1358
 
1663
- this.isEmpty = function() {
1664
- return (this.start.row === this.end.row && this.start.column === this.end.column);
1665
- };
1666
- this.isMultiLine = function() {
1667
- return (this.start.row !== this.end.row);
1668
- };
1669
- this.clone = function() {
1670
- return Range.fromPoints(this.start, this.end);
1671
- };
1672
- this.collapseRows = function() {
1673
- if (this.end.column == 0)
1674
- return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
1675
- else
1676
- return new Range(this.start.row, 0, this.end.row, 0)
1677
- };
1678
- this.toScreenRange = function(session) {
1679
- var screenPosStart = session.documentToScreenPosition(this.start);
1680
- var screenPosEnd = session.documentToScreenPosition(this.end);
1359
+ number = function () {
1681
1360
 
1682
- return new Range(
1683
- screenPosStart.row, screenPosStart.column,
1684
- screenPosEnd.row, screenPosEnd.column
1685
- );
1686
- };
1687
- this.moveBy = function(row, column) {
1688
- this.start.row += row;
1689
- this.start.column += column;
1690
- this.end.row += row;
1691
- this.end.column += column;
1692
- };
1361
+ var number,
1362
+ string = '';
1693
1363
 
1694
- }).call(Range.prototype);
1695
- Range.fromPoints = function(start, end) {
1696
- return new Range(start.row, start.column, end.row, end.column);
1697
- };
1698
- Range.comparePoints = comparePoints;
1364
+ if (ch === '-') {
1365
+ string = '-';
1366
+ next('-');
1367
+ }
1368
+ while (ch >= '0' && ch <= '9') {
1369
+ string += ch;
1370
+ next();
1371
+ }
1372
+ if (ch === '.') {
1373
+ string += '.';
1374
+ while (next() && ch >= '0' && ch <= '9') {
1375
+ string += ch;
1376
+ }
1377
+ }
1378
+ if (ch === 'e' || ch === 'E') {
1379
+ string += ch;
1380
+ next();
1381
+ if (ch === '-' || ch === '+') {
1382
+ string += ch;
1383
+ next();
1384
+ }
1385
+ while (ch >= '0' && ch <= '9') {
1386
+ string += ch;
1387
+ next();
1388
+ }
1389
+ }
1390
+ number = +string;
1391
+ if (isNaN(number)) {
1392
+ error("Bad number");
1393
+ } else {
1394
+ return number;
1395
+ }
1396
+ },
1699
1397
 
1700
- Range.comparePoints = function(p1, p2) {
1701
- return p1.row - p2.row || p1.column - p2.column;
1702
- };
1398
+ string = function () {
1703
1399
 
1400
+ var hex,
1401
+ i,
1402
+ string = '',
1403
+ uffff;
1704
1404
 
1705
- exports.Range = Range;
1706
- });
1405
+ if (ch === '"') {
1406
+ while (next()) {
1407
+ if (ch === '"') {
1408
+ next();
1409
+ return string;
1410
+ } else if (ch === '\\') {
1411
+ next();
1412
+ if (ch === 'u') {
1413
+ uffff = 0;
1414
+ for (i = 0; i < 4; i += 1) {
1415
+ hex = parseInt(next(), 16);
1416
+ if (!isFinite(hex)) {
1417
+ break;
1418
+ }
1419
+ uffff = uffff * 16 + hex;
1420
+ }
1421
+ string += String.fromCharCode(uffff);
1422
+ } else if (typeof escapee[ch] === 'string') {
1423
+ string += escapee[ch];
1424
+ } else {
1425
+ break;
1426
+ }
1427
+ } else {
1428
+ string += ch;
1429
+ }
1430
+ }
1431
+ }
1432
+ error("Bad string");
1433
+ },
1707
1434
 
1708
- define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {
1435
+ white = function () {
1709
1436
 
1437
+ while (ch && ch <= ' ') {
1438
+ next();
1439
+ }
1440
+ },
1710
1441
 
1711
- var oop = require("./lib/oop");
1712
- var EventEmitter = require("./lib/event_emitter").EventEmitter;
1442
+ word = function () {
1713
1443
 
1714
- var Anchor = exports.Anchor = function(doc, row, column) {
1715
- this.$onChange = this.onChange.bind(this);
1716
- this.attach(doc);
1717
-
1718
- if (typeof column == "undefined")
1719
- this.setPosition(row.row, row.column);
1720
- else
1721
- this.setPosition(row, column);
1722
- };
1723
-
1724
- (function() {
1725
-
1726
- oop.implement(this, EventEmitter);
1727
- this.getPosition = function() {
1728
- return this.$clipPositionToDocument(this.row, this.column);
1729
- };
1730
- this.getDocument = function() {
1731
- return this.document;
1732
- };
1733
- this.$insertRight = false;
1734
- this.onChange = function(e) {
1735
- var delta = e.data;
1736
- var range = delta.range;
1737
-
1738
- if (range.start.row == range.end.row && range.start.row != this.row)
1739
- return;
1444
+ switch (ch) {
1445
+ case 't':
1446
+ next('t');
1447
+ next('r');
1448
+ next('u');
1449
+ next('e');
1450
+ return true;
1451
+ case 'f':
1452
+ next('f');
1453
+ next('a');
1454
+ next('l');
1455
+ next('s');
1456
+ next('e');
1457
+ return false;
1458
+ case 'n':
1459
+ next('n');
1460
+ next('u');
1461
+ next('l');
1462
+ next('l');
1463
+ return null;
1464
+ }
1465
+ error("Unexpected '" + ch + "'");
1466
+ },
1740
1467
 
1741
- if (range.start.row > this.row)
1742
- return;
1468
+ value, // Place holder for the value function.
1743
1469
 
1744
- if (range.start.row == this.row && range.start.column > this.column)
1745
- return;
1470
+ array = function () {
1746
1471
 
1747
- var row = this.row;
1748
- var column = this.column;
1749
- var start = range.start;
1750
- var end = range.end;
1472
+ var array = [];
1751
1473
 
1752
- if (delta.action === "insertText") {
1753
- if (start.row === row && start.column <= column) {
1754
- if (start.column === column && this.$insertRight) {
1755
- } else if (start.row === end.row) {
1756
- column += end.column - start.column;
1757
- } else {
1758
- column -= start.column;
1759
- row += end.row - start.row;
1474
+ if (ch === '[') {
1475
+ next('[');
1476
+ white();
1477
+ if (ch === ']') {
1478
+ next(']');
1479
+ return array; // empty array
1760
1480
  }
1761
- } else if (start.row !== end.row && start.row < row) {
1762
- row += end.row - start.row;
1763
- }
1764
- } else if (delta.action === "insertLines") {
1765
- if (start.row <= row) {
1766
- row += end.row - start.row;
1767
- }
1768
- } else if (delta.action === "removeText") {
1769
- if (start.row === row && start.column < column) {
1770
- if (end.column >= column)
1771
- column = start.column;
1772
- else
1773
- column = Math.max(0, column - (end.column - start.column));
1774
-
1775
- } else if (start.row !== end.row && start.row < row) {
1776
- if (end.row === row)
1777
- column = Math.max(0, column - end.column) + start.column;
1778
- row -= (end.row - start.row);
1779
- } else if (end.row === row) {
1780
- row -= end.row - start.row;
1781
- column = Math.max(0, column - end.column) + start.column;
1782
- }
1783
- } else if (delta.action == "removeLines") {
1784
- if (start.row <= row) {
1785
- if (end.row <= row)
1786
- row -= end.row - start.row;
1787
- else {
1788
- row = start.row;
1789
- column = 0;
1481
+ while (ch) {
1482
+ array.push(value());
1483
+ white();
1484
+ if (ch === ']') {
1485
+ next(']');
1486
+ return array;
1487
+ }
1488
+ next(',');
1489
+ white();
1790
1490
  }
1791
1491
  }
1792
- }
1492
+ error("Bad array");
1493
+ },
1793
1494
 
1794
- this.setPosition(row, column, true);
1795
- };
1796
- this.setPosition = function(row, column, noClip) {
1797
- var pos;
1798
- if (noClip) {
1799
- pos = {
1800
- row: row,
1801
- column: column
1802
- };
1803
- } else {
1804
- pos = this.$clipPositionToDocument(row, column);
1805
- }
1495
+ object = function () {
1806
1496
 
1807
- if (this.row == pos.row && this.column == pos.column)
1808
- return;
1497
+ var key,
1498
+ object = {};
1809
1499
 
1810
- var old = {
1811
- row: this.row,
1812
- column: this.column
1500
+ if (ch === '{') {
1501
+ next('{');
1502
+ white();
1503
+ if (ch === '}') {
1504
+ next('}');
1505
+ return object; // empty object
1506
+ }
1507
+ while (ch) {
1508
+ key = string();
1509
+ white();
1510
+ next(':');
1511
+ if (Object.hasOwnProperty.call(object, key)) {
1512
+ error('Duplicate key "' + key + '"');
1513
+ }
1514
+ object[key] = value();
1515
+ white();
1516
+ if (ch === '}') {
1517
+ next('}');
1518
+ return object;
1519
+ }
1520
+ next(',');
1521
+ white();
1522
+ }
1523
+ }
1524
+ error("Bad object");
1813
1525
  };
1814
1526
 
1815
- this.row = pos.row;
1816
- this.column = pos.column;
1817
- this._emit("change", {
1818
- old: old,
1819
- value: pos
1820
- });
1821
- };
1822
- this.detach = function() {
1823
- this.document.removeEventListener("change", this.$onChange);
1824
- };
1825
- this.attach = function(doc) {
1826
- this.document = doc || this.document;
1827
- this.document.on("change", this.$onChange);
1828
- };
1829
- this.$clipPositionToDocument = function(row, column) {
1830
- var pos = {};
1527
+ value = function () {
1831
1528
 
1832
- if (row >= this.document.getLength()) {
1833
- pos.row = Math.max(0, this.document.getLength() - 1);
1834
- pos.column = this.document.getLine(pos.row).length;
1835
- }
1836
- else if (row < 0) {
1837
- pos.row = 0;
1838
- pos.column = 0;
1839
- }
1840
- else {
1841
- pos.row = row;
1842
- pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
1529
+ white();
1530
+ switch (ch) {
1531
+ case '{':
1532
+ return object();
1533
+ case '[':
1534
+ return array();
1535
+ case '"':
1536
+ return string();
1537
+ case '-':
1538
+ return number();
1539
+ default:
1540
+ return ch >= '0' && ch <= '9' ? number() : word();
1843
1541
  }
1844
-
1845
- if (column < 0)
1846
- pos.column = 0;
1847
-
1848
- return pos;
1849
1542
  };
1850
1543
 
1851
- }).call(Anchor.prototype);
1544
+ return function (source, reviver) {
1545
+ var result;
1546
+
1547
+ text = source;
1548
+ at = 0;
1549
+ ch = ' ';
1550
+ result = value();
1551
+ white();
1552
+ if (ch) {
1553
+ error("Syntax error");
1554
+ }
1852
1555
 
1556
+ return typeof reviver === 'function' ? function walk(holder, key) {
1557
+ var k, v, value = holder[key];
1558
+ if (value && typeof value === 'object') {
1559
+ for (k in value) {
1560
+ if (Object.hasOwnProperty.call(value, k)) {
1561
+ v = walk(value, k);
1562
+ if (v !== undefined) {
1563
+ value[k] = v;
1564
+ } else {
1565
+ delete value[k];
1566
+ }
1567
+ }
1568
+ }
1569
+ }
1570
+ return reviver.call(holder, key, value);
1571
+ }({'': result}, '') : result;
1572
+ };
1853
1573
  });
1854
1574
 
1855
- define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {
1575
+ define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"], function(require, exports, module) {
1576
+ "use strict";
1856
1577
 
1578
+ var oop = require("../lib/oop");
1579
+ var Mirror = require("../worker/mirror").Mirror;
1580
+ var parse = require("./json/json_parse");
1857
1581
 
1858
- exports.stringReverse = function(string) {
1859
- return string.split("").reverse().join("");
1582
+ var JsonWorker = exports.JsonWorker = function(sender) {
1583
+ Mirror.call(this, sender);
1584
+ this.setTimeout(200);
1860
1585
  };
1861
1586
 
1862
- exports.stringRepeat = function (string, count) {
1863
- var result = '';
1864
- while (count > 0) {
1865
- if (count & 1)
1866
- result += string;
1867
-
1868
- if (count >>= 1)
1869
- string += string;
1870
- }
1871
- return result;
1872
- };
1587
+ oop.inherits(JsonWorker, Mirror);
1873
1588
 
1874
- var trimBeginRegexp = /^\s\s*/;
1875
- var trimEndRegexp = /\s\s*$/;
1589
+ (function() {
1876
1590
 
1877
- exports.stringTrimLeft = function (string) {
1878
- return string.replace(trimBeginRegexp, '');
1879
- };
1591
+ this.onUpdate = function() {
1592
+ var value = this.doc.getValue();
1880
1593
 
1881
- exports.stringTrimRight = function (string) {
1882
- return string.replace(trimEndRegexp, '');
1883
- };
1884
-
1885
- exports.copyObject = function(obj) {
1886
- var copy = {};
1887
- for (var key in obj) {
1888
- copy[key] = obj[key];
1889
- }
1890
- return copy;
1891
- };
1892
-
1893
- exports.copyArray = function(array){
1894
- var copy = [];
1895
- for (var i=0, l=array.length; i<l; i++) {
1896
- if (array[i] && typeof array[i] == "object")
1897
- copy[i] = this.copyObject( array[i] );
1898
- else
1899
- copy[i] = array[i];
1900
- }
1901
- return copy;
1902
- };
1903
-
1904
- exports.deepCopy = function (obj) {
1905
- if (typeof obj !== "object" || !obj)
1906
- return obj;
1907
- var cons = obj.constructor;
1908
- if (cons === RegExp)
1909
- return obj;
1910
-
1911
- var copy = cons();
1912
- for (var key in obj) {
1913
- if (typeof obj[key] === "object") {
1914
- copy[key] = exports.deepCopy(obj[key]);
1915
- } else {
1916
- copy[key] = obj[key];
1594
+ try {
1595
+ var result = parse(value);
1596
+ } catch (e) {
1597
+ var pos = this.doc.indexToPosition(e.at-1);
1598
+ this.sender.emit("error", {
1599
+ row: pos.row,
1600
+ column: pos.column,
1601
+ text: e.message,
1602
+ type: "error"
1603
+ });
1604
+ return;
1917
1605
  }
1918
- }
1919
- return copy;
1920
- };
1606
+ this.sender.emit("ok");
1607
+ };
1921
1608
 
1922
- exports.arrayToMap = function(arr) {
1923
- var map = {};
1924
- for (var i=0; i<arr.length; i++) {
1925
- map[arr[i]] = 1;
1926
- }
1927
- return map;
1609
+ }).call(JsonWorker.prototype);
1928
1610
 
1929
- };
1611
+ });
1930
1612
 
1931
- exports.createMap = function(props) {
1932
- var map = Object.create(null);
1933
- for (var i in props) {
1934
- map[i] = props[i];
1935
- }
1936
- return map;
1937
- };
1938
- exports.arrayRemove = function(array, value) {
1939
- for (var i = 0; i <= array.length; i++) {
1940
- if (value === array[i]) {
1941
- array.splice(i, 1);
1942
- }
1943
- }
1944
- };
1613
+ define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) {
1945
1614
 
1946
- exports.escapeRegExp = function(str) {
1947
- return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
1948
- };
1615
+ function Empty() {}
1949
1616
 
1950
- exports.escapeHTML = function(str) {
1951
- return str.replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
1952
- };
1617
+ if (!Function.prototype.bind) {
1618
+ Function.prototype.bind = function bind(that) { // .length is 1
1619
+ var target = this;
1620
+ if (typeof target != "function") {
1621
+ throw new TypeError("Function.prototype.bind called on incompatible " + target);
1622
+ }
1623
+ var args = slice.call(arguments, 1); // for normal call
1624
+ var bound = function () {
1953
1625
 
1954
- exports.getMatchOffsets = function(string, regExp) {
1955
- var matches = [];
1626
+ if (this instanceof bound) {
1956
1627
 
1957
- string.replace(regExp, function(str) {
1958
- matches.push({
1959
- offset: arguments[arguments.length-2],
1960
- length: str.length
1961
- });
1962
- });
1628
+ var result = target.apply(
1629
+ this,
1630
+ args.concat(slice.call(arguments))
1631
+ );
1632
+ if (Object(result) === result) {
1633
+ return result;
1634
+ }
1635
+ return this;
1963
1636
 
1964
- return matches;
1965
- };
1966
- exports.deferredCall = function(fcn) {
1637
+ } else {
1638
+ return target.apply(
1639
+ that,
1640
+ args.concat(slice.call(arguments))
1641
+ );
1967
1642
 
1968
- var timer = null;
1969
- var callback = function() {
1970
- timer = null;
1971
- fcn();
1972
- };
1643
+ }
1973
1644
 
1974
- var deferred = function(timeout) {
1975
- deferred.cancel();
1976
- timer = setTimeout(callback, timeout || 0);
1977
- return deferred;
1645
+ };
1646
+ if(target.prototype) {
1647
+ Empty.prototype = target.prototype;
1648
+ bound.prototype = new Empty();
1649
+ Empty.prototype = null;
1650
+ }
1651
+ return bound;
1978
1652
  };
1653
+ }
1654
+ var call = Function.prototype.call;
1655
+ var prototypeOfArray = Array.prototype;
1656
+ var prototypeOfObject = Object.prototype;
1657
+ var slice = prototypeOfArray.slice;
1658
+ var _toString = call.bind(prototypeOfObject.toString);
1659
+ var owns = call.bind(prototypeOfObject.hasOwnProperty);
1660
+ var defineGetter;
1661
+ var defineSetter;
1662
+ var lookupGetter;
1663
+ var lookupSetter;
1664
+ var supportsAccessors;
1665
+ if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
1666
+ defineGetter = call.bind(prototypeOfObject.__defineGetter__);
1667
+ defineSetter = call.bind(prototypeOfObject.__defineSetter__);
1668
+ lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
1669
+ lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
1670
+ }
1671
+ if ([1,2].splice(0).length != 2) {
1672
+ if(function() { // test IE < 9 to splice bug - see issue #138
1673
+ function makeArray(l) {
1674
+ var a = new Array(l+2);
1675
+ a[0] = a[1] = 0;
1676
+ return a;
1677
+ }
1678
+ var array = [], lengthBefore;
1679
+
1680
+ array.splice.apply(array, makeArray(20));
1681
+ array.splice.apply(array, makeArray(26));
1979
1682
 
1980
- deferred.schedule = deferred;
1683
+ lengthBefore = array.length; //46
1684
+ array.splice(5, 0, "XXX"); // add one element
1981
1685
 
1982
- deferred.call = function() {
1983
- this.cancel();
1984
- fcn();
1985
- return deferred;
1986
- };
1686
+ lengthBefore + 1 == array.length
1987
1687
 
1988
- deferred.cancel = function() {
1989
- clearTimeout(timer);
1990
- timer = null;
1991
- return deferred;
1992
- };
1993
-
1994
- deferred.isPending = function() {
1995
- return timer;
1996
- };
1688
+ if (lengthBefore + 1 == array.length) {
1689
+ return true;// has right splice implementation without bugs
1690
+ }
1691
+ }()) {//IE 6/7
1692
+ var array_splice = Array.prototype.splice;
1693
+ Array.prototype.splice = function(start, deleteCount) {
1694
+ if (!arguments.length) {
1695
+ return [];
1696
+ } else {
1697
+ return array_splice.apply(this, [
1698
+ start === void 0 ? 0 : start,
1699
+ deleteCount === void 0 ? (this.length - start) : deleteCount
1700
+ ].concat(slice.call(arguments, 2)))
1701
+ }
1702
+ };
1703
+ } else {//IE8
1704
+ Array.prototype.splice = function(pos, removeCount){
1705
+ var length = this.length;
1706
+ if (pos > 0) {
1707
+ if (pos > length)
1708
+ pos = length;
1709
+ } else if (pos == void 0) {
1710
+ pos = 0;
1711
+ } else if (pos < 0) {
1712
+ pos = Math.max(length + pos, 0);
1713
+ }
1997
1714
 
1998
- return deferred;
1999
- };
1715
+ if (!(pos+removeCount < length))
1716
+ removeCount = length - pos;
2000
1717
 
1718
+ var removed = this.slice(pos, pos+removeCount);
1719
+ var insert = slice.call(arguments, 2);
1720
+ var add = insert.length;
1721
+ if (pos === length) {
1722
+ if (add) {
1723
+ this.push.apply(this, insert);
1724
+ }
1725
+ } else {
1726
+ var remove = Math.min(removeCount, length - pos);
1727
+ var tailOldPos = pos + remove;
1728
+ var tailNewPos = tailOldPos + add - remove;
1729
+ var tailCount = length - tailOldPos;
1730
+ var lengthAfterRemove = length - remove;
2001
1731
 
2002
- exports.delayedCall = function(fcn, defaultTimeout) {
2003
- var timer = null;
2004
- var callback = function() {
2005
- timer = null;
2006
- fcn();
2007
- };
1732
+ if (tailNewPos < tailOldPos) { // case A
1733
+ for (var i = 0; i < tailCount; ++i) {
1734
+ this[tailNewPos+i] = this[tailOldPos+i];
1735
+ }
1736
+ } else if (tailNewPos > tailOldPos) { // case B
1737
+ for (i = tailCount; i--; ) {
1738
+ this[tailNewPos+i] = this[tailOldPos+i];
1739
+ }
1740
+ } // else, add == remove (nothing to do)
2008
1741
 
2009
- var _self = function(timeout) {
2010
- if (timer == null)
2011
- timer = setTimeout(callback, timeout || defaultTimeout);
1742
+ if (add && pos === lengthAfterRemove) {
1743
+ this.length = lengthAfterRemove; // truncate array
1744
+ this.push.apply(this, insert);
1745
+ } else {
1746
+ this.length = lengthAfterRemove + add; // reserves space
1747
+ for (i = 0; i < add; ++i) {
1748
+ this[pos+i] = insert[i];
1749
+ }
1750
+ }
1751
+ }
1752
+ return removed;
1753
+ };
1754
+ }
1755
+ }
1756
+ if (!Array.isArray) {
1757
+ Array.isArray = function isArray(obj) {
1758
+ return _toString(obj) == "[object Array]";
2012
1759
  };
1760
+ }
1761
+ var boxedString = Object("a"),
1762
+ splitString = boxedString[0] != "a" || !(0 in boxedString);
2013
1763
 
2014
- _self.delay = function(timeout) {
2015
- timer && clearTimeout(timer);
2016
- timer = setTimeout(callback, timeout || defaultTimeout);
2017
- };
2018
- _self.schedule = _self;
2019
-
2020
- _self.call = function() {
2021
- this.cancel();
2022
- fcn();
1764
+ if (!Array.prototype.forEach) {
1765
+ Array.prototype.forEach = function forEach(fun /*, thisp*/) {
1766
+ var object = toObject(this),
1767
+ self = splitString && _toString(this) == "[object String]" ?
1768
+ this.split("") :
1769
+ object,
1770
+ thisp = arguments[1],
1771
+ i = -1,
1772
+ length = self.length >>> 0;
1773
+ if (_toString(fun) != "[object Function]") {
1774
+ throw new TypeError(); // TODO message
1775
+ }
1776
+
1777
+ while (++i < length) {
1778
+ if (i in self) {
1779
+ fun.call(thisp, self[i], i, object);
1780
+ }
1781
+ }
2023
1782
  };
1783
+ }
1784
+ if (!Array.prototype.map) {
1785
+ Array.prototype.map = function map(fun /*, thisp*/) {
1786
+ var object = toObject(this),
1787
+ self = splitString && _toString(this) == "[object String]" ?
1788
+ this.split("") :
1789
+ object,
1790
+ length = self.length >>> 0,
1791
+ result = Array(length),
1792
+ thisp = arguments[1];
1793
+ if (_toString(fun) != "[object Function]") {
1794
+ throw new TypeError(fun + " is not a function");
1795
+ }
2024
1796
 
2025
- _self.cancel = function() {
2026
- timer && clearTimeout(timer);
2027
- timer = null;
1797
+ for (var i = 0; i < length; i++) {
1798
+ if (i in self)
1799
+ result[i] = fun.call(thisp, self[i], i, object);
1800
+ }
1801
+ return result;
2028
1802
  };
1803
+ }
1804
+ if (!Array.prototype.filter) {
1805
+ Array.prototype.filter = function filter(fun /*, thisp */) {
1806
+ var object = toObject(this),
1807
+ self = splitString && _toString(this) == "[object String]" ?
1808
+ this.split("") :
1809
+ object,
1810
+ length = self.length >>> 0,
1811
+ result = [],
1812
+ value,
1813
+ thisp = arguments[1];
1814
+ if (_toString(fun) != "[object Function]") {
1815
+ throw new TypeError(fun + " is not a function");
1816
+ }
2029
1817
 
2030
- _self.isPending = function() {
2031
- return timer;
1818
+ for (var i = 0; i < length; i++) {
1819
+ if (i in self) {
1820
+ value = self[i];
1821
+ if (fun.call(thisp, value, i, object)) {
1822
+ result.push(value);
1823
+ }
1824
+ }
1825
+ }
1826
+ return result;
2032
1827
  };
1828
+ }
1829
+ if (!Array.prototype.every) {
1830
+ Array.prototype.every = function every(fun /*, thisp */) {
1831
+ var object = toObject(this),
1832
+ self = splitString && _toString(this) == "[object String]" ?
1833
+ this.split("") :
1834
+ object,
1835
+ length = self.length >>> 0,
1836
+ thisp = arguments[1];
1837
+ if (_toString(fun) != "[object Function]") {
1838
+ throw new TypeError(fun + " is not a function");
1839
+ }
2033
1840
 
2034
- return _self;
2035
- };
2036
- });
1841
+ for (var i = 0; i < length; i++) {
1842
+ if (i in self && !fun.call(thisp, self[i], i, object)) {
1843
+ return false;
1844
+ }
1845
+ }
1846
+ return true;
1847
+ };
1848
+ }
1849
+ if (!Array.prototype.some) {
1850
+ Array.prototype.some = function some(fun /*, thisp */) {
1851
+ var object = toObject(this),
1852
+ self = splitString && _toString(this) == "[object String]" ?
1853
+ this.split("") :
1854
+ object,
1855
+ length = self.length >>> 0,
1856
+ thisp = arguments[1];
1857
+ if (_toString(fun) != "[object Function]") {
1858
+ throw new TypeError(fun + " is not a function");
1859
+ }
2037
1860
 
2038
- define('ace/mode/json/json_parse', ['require', 'exports', 'module' ], function(require, exports, module) {
1861
+ for (var i = 0; i < length; i++) {
1862
+ if (i in self && fun.call(thisp, self[i], i, object)) {
1863
+ return true;
1864
+ }
1865
+ }
1866
+ return false;
1867
+ };
1868
+ }
1869
+ if (!Array.prototype.reduce) {
1870
+ Array.prototype.reduce = function reduce(fun /*, initial*/) {
1871
+ var object = toObject(this),
1872
+ self = splitString && _toString(this) == "[object String]" ?
1873
+ this.split("") :
1874
+ object,
1875
+ length = self.length >>> 0;
1876
+ if (_toString(fun) != "[object Function]") {
1877
+ throw new TypeError(fun + " is not a function");
1878
+ }
1879
+ if (!length && arguments.length == 1) {
1880
+ throw new TypeError("reduce of empty array with no initial value");
1881
+ }
2039
1882
 
2040
- var at, // The index of the current character
2041
- ch, // The current character
2042
- escapee = {
2043
- '"': '"',
2044
- '\\': '\\',
2045
- '/': '/',
2046
- b: '\b',
2047
- f: '\f',
2048
- n: '\n',
2049
- r: '\r',
2050
- t: '\t'
2051
- },
2052
- text,
1883
+ var i = 0;
1884
+ var result;
1885
+ if (arguments.length >= 2) {
1886
+ result = arguments[1];
1887
+ } else {
1888
+ do {
1889
+ if (i in self) {
1890
+ result = self[i++];
1891
+ break;
1892
+ }
1893
+ if (++i >= length) {
1894
+ throw new TypeError("reduce of empty array with no initial value");
1895
+ }
1896
+ } while (true);
1897
+ }
2053
1898
 
2054
- error = function (m) {
1899
+ for (; i < length; i++) {
1900
+ if (i in self) {
1901
+ result = fun.call(void 0, result, self[i], i, object);
1902
+ }
1903
+ }
2055
1904
 
2056
- throw {
2057
- name: 'SyntaxError',
2058
- message: m,
2059
- at: at,
2060
- text: text
2061
- };
2062
- },
1905
+ return result;
1906
+ };
1907
+ }
1908
+ if (!Array.prototype.reduceRight) {
1909
+ Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
1910
+ var object = toObject(this),
1911
+ self = splitString && _toString(this) == "[object String]" ?
1912
+ this.split("") :
1913
+ object,
1914
+ length = self.length >>> 0;
1915
+ if (_toString(fun) != "[object Function]") {
1916
+ throw new TypeError(fun + " is not a function");
1917
+ }
1918
+ if (!length && arguments.length == 1) {
1919
+ throw new TypeError("reduceRight of empty array with no initial value");
1920
+ }
2063
1921
 
2064
- next = function (c) {
1922
+ var result, i = length - 1;
1923
+ if (arguments.length >= 2) {
1924
+ result = arguments[1];
1925
+ } else {
1926
+ do {
1927
+ if (i in self) {
1928
+ result = self[i--];
1929
+ break;
1930
+ }
1931
+ if (--i < 0) {
1932
+ throw new TypeError("reduceRight of empty array with no initial value");
1933
+ }
1934
+ } while (true);
1935
+ }
2065
1936
 
2066
- if (c && c !== ch) {
2067
- error("Expected '" + c + "' instead of '" + ch + "'");
1937
+ do {
1938
+ if (i in this) {
1939
+ result = fun.call(void 0, result, self[i], i, object);
2068
1940
  }
1941
+ } while (i--);
2069
1942
 
2070
- ch = text.charAt(at);
2071
- at += 1;
2072
- return ch;
2073
- },
2074
-
2075
- number = function () {
1943
+ return result;
1944
+ };
1945
+ }
1946
+ if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {
1947
+ Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
1948
+ var self = splitString && _toString(this) == "[object String]" ?
1949
+ this.split("") :
1950
+ toObject(this),
1951
+ length = self.length >>> 0;
2076
1952
 
2077
- var number,
2078
- string = '';
1953
+ if (!length) {
1954
+ return -1;
1955
+ }
2079
1956
 
2080
- if (ch === '-') {
2081
- string = '-';
2082
- next('-');
2083
- }
2084
- while (ch >= '0' && ch <= '9') {
2085
- string += ch;
2086
- next();
2087
- }
2088
- if (ch === '.') {
2089
- string += '.';
2090
- while (next() && ch >= '0' && ch <= '9') {
2091
- string += ch;
2092
- }
1957
+ var i = 0;
1958
+ if (arguments.length > 1) {
1959
+ i = toInteger(arguments[1]);
1960
+ }
1961
+ i = i >= 0 ? i : Math.max(0, length + i);
1962
+ for (; i < length; i++) {
1963
+ if (i in self && self[i] === sought) {
1964
+ return i;
2093
1965
  }
2094
- if (ch === 'e' || ch === 'E') {
2095
- string += ch;
2096
- next();
2097
- if (ch === '-' || ch === '+') {
2098
- string += ch;
2099
- next();
2100
- }
2101
- while (ch >= '0' && ch <= '9') {
2102
- string += ch;
2103
- next();
2104
- }
2105
- }
2106
- number = +string;
2107
- if (isNaN(number)) {
2108
- error("Bad number");
2109
- } else {
2110
- return number;
1966
+ }
1967
+ return -1;
1968
+ };
1969
+ }
1970
+ if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {
1971
+ Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
1972
+ var self = splitString && _toString(this) == "[object String]" ?
1973
+ this.split("") :
1974
+ toObject(this),
1975
+ length = self.length >>> 0;
1976
+
1977
+ if (!length) {
1978
+ return -1;
1979
+ }
1980
+ var i = length - 1;
1981
+ if (arguments.length > 1) {
1982
+ i = Math.min(i, toInteger(arguments[1]));
1983
+ }
1984
+ i = i >= 0 ? i : length - Math.abs(i);
1985
+ for (; i >= 0; i--) {
1986
+ if (i in self && sought === self[i]) {
1987
+ return i;
2111
1988
  }
2112
- },
1989
+ }
1990
+ return -1;
1991
+ };
1992
+ }
1993
+ if (!Object.getPrototypeOf) {
1994
+ Object.getPrototypeOf = function getPrototypeOf(object) {
1995
+ return object.__proto__ || (
1996
+ object.constructor ?
1997
+ object.constructor.prototype :
1998
+ prototypeOfObject
1999
+ );
2000
+ };
2001
+ }
2002
+ if (!Object.getOwnPropertyDescriptor) {
2003
+ var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
2004
+ "non-object: ";
2005
+ Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
2006
+ if ((typeof object != "object" && typeof object != "function") || object === null)
2007
+ throw new TypeError(ERR_NON_OBJECT + object);
2008
+ if (!owns(object, property))
2009
+ return;
2113
2010
 
2114
- string = function () {
2011
+ var descriptor, getter, setter;
2012
+ descriptor = { enumerable: true, configurable: true };
2013
+ if (supportsAccessors) {
2014
+ var prototype = object.__proto__;
2015
+ object.__proto__ = prototypeOfObject;
2115
2016
 
2116
- var hex,
2117
- i,
2118
- string = '',
2119
- uffff;
2017
+ var getter = lookupGetter(object, property);
2018
+ var setter = lookupSetter(object, property);
2019
+ object.__proto__ = prototype;
2120
2020
 
2121
- if (ch === '"') {
2122
- while (next()) {
2123
- if (ch === '"') {
2124
- next();
2125
- return string;
2126
- } else if (ch === '\\') {
2127
- next();
2128
- if (ch === 'u') {
2129
- uffff = 0;
2130
- for (i = 0; i < 4; i += 1) {
2131
- hex = parseInt(next(), 16);
2132
- if (!isFinite(hex)) {
2133
- break;
2134
- }
2135
- uffff = uffff * 16 + hex;
2136
- }
2137
- string += String.fromCharCode(uffff);
2138
- } else if (typeof escapee[ch] === 'string') {
2139
- string += escapee[ch];
2140
- } else {
2141
- break;
2142
- }
2143
- } else {
2144
- string += ch;
2145
- }
2146
- }
2021
+ if (getter || setter) {
2022
+ if (getter) descriptor.get = getter;
2023
+ if (setter) descriptor.set = setter;
2024
+ return descriptor;
2147
2025
  }
2148
- error("Bad string");
2149
- },
2026
+ }
2027
+ descriptor.value = object[property];
2028
+ return descriptor;
2029
+ };
2030
+ }
2031
+ if (!Object.getOwnPropertyNames) {
2032
+ Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
2033
+ return Object.keys(object);
2034
+ };
2035
+ }
2036
+ if (!Object.create) {
2037
+ var createEmpty;
2038
+ if (Object.prototype.__proto__ === null) {
2039
+ createEmpty = function () {
2040
+ return { "__proto__": null };
2041
+ };
2042
+ } else {
2043
+ createEmpty = function () {
2044
+ var empty = {};
2045
+ for (var i in empty)
2046
+ empty[i] = null;
2047
+ empty.constructor =
2048
+ empty.hasOwnProperty =
2049
+ empty.propertyIsEnumerable =
2050
+ empty.isPrototypeOf =
2051
+ empty.toLocaleString =
2052
+ empty.toString =
2053
+ empty.valueOf =
2054
+ empty.__proto__ = null;
2055
+ return empty;
2056
+ }
2057
+ }
2150
2058
 
2151
- white = function () {
2059
+ Object.create = function create(prototype, properties) {
2060
+ var object;
2061
+ if (prototype === null) {
2062
+ object = createEmpty();
2063
+ } else {
2064
+ if (typeof prototype != "object")
2065
+ throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
2066
+ var Type = function () {};
2067
+ Type.prototype = prototype;
2068
+ object = new Type();
2069
+ object.__proto__ = prototype;
2070
+ }
2071
+ if (properties !== void 0)
2072
+ Object.defineProperties(object, properties);
2073
+ return object;
2074
+ };
2075
+ }
2152
2076
 
2153
- while (ch && ch <= ' ') {
2154
- next();
2155
- }
2156
- },
2077
+ function doesDefinePropertyWork(object) {
2078
+ try {
2079
+ Object.defineProperty(object, "sentinel", {});
2080
+ return "sentinel" in object;
2081
+ } catch (exception) {
2082
+ }
2083
+ }
2084
+ if (Object.defineProperty) {
2085
+ var definePropertyWorksOnObject = doesDefinePropertyWork({});
2086
+ var definePropertyWorksOnDom = typeof document == "undefined" ||
2087
+ doesDefinePropertyWork(document.createElement("div"));
2088
+ if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
2089
+ var definePropertyFallback = Object.defineProperty;
2090
+ }
2091
+ }
2157
2092
 
2158
- word = function () {
2093
+ if (!Object.defineProperty || definePropertyFallback) {
2094
+ var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
2095
+ var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
2096
+ var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
2097
+ "on this javascript engine";
2159
2098
 
2160
- switch (ch) {
2161
- case 't':
2162
- next('t');
2163
- next('r');
2164
- next('u');
2165
- next('e');
2166
- return true;
2167
- case 'f':
2168
- next('f');
2169
- next('a');
2170
- next('l');
2171
- next('s');
2172
- next('e');
2173
- return false;
2174
- case 'n':
2175
- next('n');
2176
- next('u');
2177
- next('l');
2178
- next('l');
2179
- return null;
2099
+ Object.defineProperty = function defineProperty(object, property, descriptor) {
2100
+ if ((typeof object != "object" && typeof object != "function") || object === null)
2101
+ throw new TypeError(ERR_NON_OBJECT_TARGET + object);
2102
+ if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
2103
+ throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);
2104
+ if (definePropertyFallback) {
2105
+ try {
2106
+ return definePropertyFallback.call(Object, object, property, descriptor);
2107
+ } catch (exception) {
2180
2108
  }
2181
- error("Unexpected '" + ch + "'");
2182
- },
2109
+ }
2110
+ if (owns(descriptor, "value")) {
2183
2111
 
2184
- value, // Place holder for the value function.
2112
+ if (supportsAccessors && (lookupGetter(object, property) ||
2113
+ lookupSetter(object, property)))
2114
+ {
2115
+ var prototype = object.__proto__;
2116
+ object.__proto__ = prototypeOfObject;
2117
+ delete object[property];
2118
+ object[property] = descriptor.value;
2119
+ object.__proto__ = prototype;
2120
+ } else {
2121
+ object[property] = descriptor.value;
2122
+ }
2123
+ } else {
2124
+ if (!supportsAccessors)
2125
+ throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
2126
+ if (owns(descriptor, "get"))
2127
+ defineGetter(object, property, descriptor.get);
2128
+ if (owns(descriptor, "set"))
2129
+ defineSetter(object, property, descriptor.set);
2130
+ }
2185
2131
 
2186
- array = function () {
2132
+ return object;
2133
+ };
2134
+ }
2135
+ if (!Object.defineProperties) {
2136
+ Object.defineProperties = function defineProperties(object, properties) {
2137
+ for (var property in properties) {
2138
+ if (owns(properties, property))
2139
+ Object.defineProperty(object, property, properties[property]);
2140
+ }
2141
+ return object;
2142
+ };
2143
+ }
2144
+ if (!Object.seal) {
2145
+ Object.seal = function seal(object) {
2146
+ return object;
2147
+ };
2148
+ }
2149
+ if (!Object.freeze) {
2150
+ Object.freeze = function freeze(object) {
2151
+ return object;
2152
+ };
2153
+ }
2154
+ try {
2155
+ Object.freeze(function () {});
2156
+ } catch (exception) {
2157
+ Object.freeze = (function freeze(freezeObject) {
2158
+ return function freeze(object) {
2159
+ if (typeof object == "function") {
2160
+ return object;
2161
+ } else {
2162
+ return freezeObject(object);
2163
+ }
2164
+ };
2165
+ })(Object.freeze);
2166
+ }
2167
+ if (!Object.preventExtensions) {
2168
+ Object.preventExtensions = function preventExtensions(object) {
2169
+ return object;
2170
+ };
2171
+ }
2172
+ if (!Object.isSealed) {
2173
+ Object.isSealed = function isSealed(object) {
2174
+ return false;
2175
+ };
2176
+ }
2177
+ if (!Object.isFrozen) {
2178
+ Object.isFrozen = function isFrozen(object) {
2179
+ return false;
2180
+ };
2181
+ }
2182
+ if (!Object.isExtensible) {
2183
+ Object.isExtensible = function isExtensible(object) {
2184
+ if (Object(object) === object) {
2185
+ throw new TypeError(); // TODO message
2186
+ }
2187
+ var name = '';
2188
+ while (owns(object, name)) {
2189
+ name += '?';
2190
+ }
2191
+ object[name] = true;
2192
+ var returnValue = owns(object, name);
2193
+ delete object[name];
2194
+ return returnValue;
2195
+ };
2196
+ }
2197
+ if (!Object.keys) {
2198
+ var hasDontEnumBug = true,
2199
+ dontEnums = [
2200
+ "toString",
2201
+ "toLocaleString",
2202
+ "valueOf",
2203
+ "hasOwnProperty",
2204
+ "isPrototypeOf",
2205
+ "propertyIsEnumerable",
2206
+ "constructor"
2207
+ ],
2208
+ dontEnumsLength = dontEnums.length;
2187
2209
 
2188
- var array = [];
2210
+ for (var key in {"toString": null}) {
2211
+ hasDontEnumBug = false;
2212
+ }
2189
2213
 
2190
- if (ch === '[') {
2191
- next('[');
2192
- white();
2193
- if (ch === ']') {
2194
- next(']');
2195
- return array; // empty array
2196
- }
2197
- while (ch) {
2198
- array.push(value());
2199
- white();
2200
- if (ch === ']') {
2201
- next(']');
2202
- return array;
2203
- }
2204
- next(',');
2205
- white();
2206
- }
2207
- }
2208
- error("Bad array");
2209
- },
2214
+ Object.keys = function keys(object) {
2210
2215
 
2211
- object = function () {
2216
+ if (
2217
+ (typeof object != "object" && typeof object != "function") ||
2218
+ object === null
2219
+ ) {
2220
+ throw new TypeError("Object.keys called on a non-object");
2221
+ }
2212
2222
 
2213
- var key,
2214
- object = {};
2223
+ var keys = [];
2224
+ for (var name in object) {
2225
+ if (owns(object, name)) {
2226
+ keys.push(name);
2227
+ }
2228
+ }
2215
2229
 
2216
- if (ch === '{') {
2217
- next('{');
2218
- white();
2219
- if (ch === '}') {
2220
- next('}');
2221
- return object; // empty object
2222
- }
2223
- while (ch) {
2224
- key = string();
2225
- white();
2226
- next(':');
2227
- if (Object.hasOwnProperty.call(object, key)) {
2228
- error('Duplicate key "' + key + '"');
2229
- }
2230
- object[key] = value();
2231
- white();
2232
- if (ch === '}') {
2233
- next('}');
2234
- return object;
2235
- }
2236
- next(',');
2237
- white();
2230
+ if (hasDontEnumBug) {
2231
+ for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
2232
+ var dontEnum = dontEnums[i];
2233
+ if (owns(object, dontEnum)) {
2234
+ keys.push(dontEnum);
2238
2235
  }
2239
2236
  }
2240
- error("Bad object");
2241
- };
2242
-
2243
- value = function () {
2244
-
2245
- white();
2246
- switch (ch) {
2247
- case '{':
2248
- return object();
2249
- case '[':
2250
- return array();
2251
- case '"':
2252
- return string();
2253
- case '-':
2254
- return number();
2255
- default:
2256
- return ch >= '0' && ch <= '9' ? number() : word();
2257
2237
  }
2238
+ return keys;
2258
2239
  };
2259
2240
 
2260
- return function (source, reviver) {
2261
- var result;
2241
+ }
2242
+ if (!Date.now) {
2243
+ Date.now = function now() {
2244
+ return new Date().getTime();
2245
+ };
2246
+ }
2247
+ var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
2248
+ "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
2249
+ "\u2029\uFEFF";
2250
+ if (!String.prototype.trim || ws.trim()) {
2251
+ ws = "[" + ws + "]";
2252
+ var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
2253
+ trimEndRegexp = new RegExp(ws + ws + "*$");
2254
+ String.prototype.trim = function trim() {
2255
+ return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
2256
+ };
2257
+ }
2262
2258
 
2263
- text = source;
2264
- at = 0;
2265
- ch = ' ';
2266
- result = value();
2267
- white();
2268
- if (ch) {
2269
- error("Syntax error");
2259
+ function toInteger(n) {
2260
+ n = +n;
2261
+ if (n !== n) { // isNaN
2262
+ n = 0;
2263
+ } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {
2264
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
2265
+ }
2266
+ return n;
2267
+ }
2268
+
2269
+ function isPrimitive(input) {
2270
+ var type = typeof input;
2271
+ return (
2272
+ input === null ||
2273
+ type === "undefined" ||
2274
+ type === "boolean" ||
2275
+ type === "number" ||
2276
+ type === "string"
2277
+ );
2278
+ }
2279
+
2280
+ function toPrimitive(input) {
2281
+ var val, valueOf, toString;
2282
+ if (isPrimitive(input)) {
2283
+ return input;
2284
+ }
2285
+ valueOf = input.valueOf;
2286
+ if (typeof valueOf === "function") {
2287
+ val = valueOf.call(input);
2288
+ if (isPrimitive(val)) {
2289
+ return val;
2270
2290
  }
2291
+ }
2292
+ toString = input.toString;
2293
+ if (typeof toString === "function") {
2294
+ val = toString.call(input);
2295
+ if (isPrimitive(val)) {
2296
+ return val;
2297
+ }
2298
+ }
2299
+ throw new TypeError();
2300
+ }
2301
+ var toObject = function (o) {
2302
+ if (o == null) { // this matches both null and undefined
2303
+ throw new TypeError("can't convert "+o+" to object");
2304
+ }
2305
+ return Object(o);
2306
+ };
2271
2307
 
2272
- return typeof reviver === 'function' ? function walk(holder, key) {
2273
- var k, v, value = holder[key];
2274
- if (value && typeof value === 'object') {
2275
- for (k in value) {
2276
- if (Object.hasOwnProperty.call(value, k)) {
2277
- v = walk(value, k);
2278
- if (v !== undefined) {
2279
- value[k] = v;
2280
- } else {
2281
- delete value[k];
2282
- }
2283
- }
2284
- }
2285
- }
2286
- return reviver.call(holder, key, value);
2287
- }({'': result}, '') : result;
2288
- };
2289
2308
  });