jquery-ace-rails 1.0.0

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