jquery-ace-rails 1.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 (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
+ });