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